IMG-LOGO
공지사항 :

JavaScript (Node.js)

lmkfox - 2025-04-11 07:12:46 38 Views 0 Comment

Node.js란?

Node.jsChrome의 V8 JavaScript 엔진으로 빌드된 서버 사이드 JavaScript 실행 환경이야. 2009년에 출시됐고, JavaScript 코드를 브라우저가 아닌 서버에서 실행할 수 있도록 만들어졌어.

간단히 말하면, Node.js를 이용하면 JavaScript로 웹 서버를 만들고, 파일 시스템에 접근하고, 데이터베이스와 통신하고, 네트워크 프로그래밍도 할 수 있어.


Node.js의 주요 특징

1. 이벤트 기반 비동기 I/O

• 블로킹 없이 데이터를 처리

• 콜백, Promise, async/await 같은 방식으로 비동기 작업 처리

2. 단일 스레드

• 한 개의 스레드로 모든 클라이언트 요청을 처리하지만, 비동기 방식으로 높은 동시성을 가짐

3. 빠른 실행 속도

• Google V8 엔진 기반이라 자바스크립트 실행 속도가 매우 빠름

4. NPM (Node Package Manager)

• 세계에서 가장 큰 오픈 소스 패키지 저장소

• 다른 사람이 만든 모듈을 쉽게 설치하고 사용할 수 있음


Node.js의 주요 사용 분야

분야

설명

웹 서버 개발

Express 등과 함께 빠르고 유연한 웹 서버 개발 가능

REST API 서버

비동기 처리가 쉬워 API 서버에 적합

실시간 서비스

채팅, 게임, 실시간 알림 시스템에 유리

CLI 도구

터미널 명령어 인터페이스 만들기

백엔드 처리

데이터베이스 연동, 파일 처리, 인증 처리 등


간단한 Node.js 예제

1. HTTP 서버 만들기

// server.js
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello, Node.js');
});

server.listen(3000, () => {
    console.log('서버가 3000번 포트에서 실행 중');
});
node server.js

2. Express를 이용한 REST API

npm init -y
npm install express
// app.js
const express = require('express');
const app = express();

app.use(express.json());

app.get('/', (req, res) => {
    res.send('Hello, Express');
});

app.post('/user', (req, res) => {
    const user = req.body;
    res.json({ message: '사용자 생성됨', user });
});

app.listen(3000, () => {
    console.log('서버 실행 중');
});


Node.js에서 사용하는 주요 모듈

모듈

설명

fs

파일 읽기, 쓰기 등 파일 시스템 제어

http

HTTP 서버 및 요청 처리

express

가장 널리 사용되는 웹 프레임워크

path

파일 경로 조작

crypto

암호화 처리

dotenv

환경 변수(.env 파일) 관리

mongoose

MongoDB와 연동하는 ODM


Node.js에서 자주 쓰이는 기술 스택

Express: 라우팅, 미들웨어 등을 제공하는 경량 웹 프레임워크

MongoDB + Mongoose: NoSQL 데이터베이스 연동

JWT (jsonwebtoken): 로그인 및 인증 처리

Socket.IO: 실시간 웹소켓 통신

ES 모듈 + Babel: 최신 JavaScript 문법 사용

TypeScript: 정적 타입을 추가해 더 안정적인 코드 작성


Node.js 장단점

장점

• JavaScript로 프론트와 백엔드를 모두 작성 가능

• 실시간 처리에 유리

• 빠른 응답성과 높은 동시성

• NPM을 통한 다양한 라이브러리 활용

단점

• CPU 집약적인 작업에는 부적합

• 콜백 지옥 등 비동기 처리의 복잡성

• 한 번의 코드 실수로 서버 전체가 다운될 수 있음


Node.js 프로젝트 구조 예시

myapp/
├── app.js
├── routes/
│   └── user.js
├── controllers/
│   └── userController.js
├── models/
│   └── userModel.js
├── middlewares/
├── config/
│   └── db.js
├── .env
└── package.json


더 알고 싶다면 다음 주제도 자세히 다룰 수 있어:

• REST API 서버 CRUD 완성하기

• JWT 기반 로그인 구현

• Node.js에서 MySQL 또는 MongoDB 연동하기

• 실시간 채팅 서버 만들기 (Socket.IO)

• Node.js 배포하기 (PM2, Docker, Nginx)


댓글