Node.js 기초
Node.js는 확장성 있는 네트워크 애플리케이션 개발에 사용되는 자바스크립트 런타임입니다. 서버 개발을 비롯한 다양한 분야에서 활용됩니다.
개요
Node.js는 구글의 V8 자바스크립트 엔진으로 빌드된 서버 측 플랫폼입니다. 웹 브라우저 밖에서도 자바스크립트를 실행할 수 있게 해주며, 특히 이벤트 기반, 비동기 I/O 모델을 채택하여 가볍고 효율적인 데이터 처리 성능을 보여줍니다. 이를 통해 실시간 웹 서비스, 스트리밍 서비스 등 다양한 애플리케이션을 구축할 수 있습니다.
참고
Node.js는 프레임워크가 아닌 자바스크립트 '런타임' 환경입니다. Express.js, NestJS와 같은 프레임워크를 함께 사용하여 더욱 체계적인 개발을 할 수 있습니다.
핵심 개념
Node.js를 이해하는 데 중요한 몇 가지 핵심 개념입니다:
개념 | 설명 |
---|---|
V8 엔진 |
구글 크롬의 자바스크립트 엔진으로, 자바스크립트 코드를 매우 빠르게 실행합니다. |
단일 스레드 |
기본적으로 하나의 스레드로 동작하며, 비동기 방식을 통해 여러 작업을 동시에 처리합니다. |
비동기 I/O |
네트워크 요청, 파일 시스템 접근 등 시간이 오래 걸리는 작업이 완료될 때까지 기다리지 않고 다음 코드를 실행합니다. |
이벤트 루프 |
비동기 작업의 순서를 관리하는 메커니즘으로, Node.js의 핵심 동작 원리입니다. |
패키지 매니저(NPM)
NPM(Node Package Manager)은 Node.js의 기본 패키지 관리 도구입니다. 전 세계 개발자들이 공유하는 수많은 라이브러리(패키지)를 쉽게 설치, 업데이트, 관리할 수 있습니다.
CLI
# 새로운 Node.js 프로젝트 시작 npm init -y # Express.js 패키지 설치 npm install express # 개발용 패키지 설치 npm install nodemon --save-dev
사용 예제
아주 간단한 "Hello, World!" 웹 서버 예제입니다. (Express.js 사용)
JavaScript
const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello, World!'); }); app.listen(port, () => { console.log(Server listening on port ${port}); });
주의사항 및 팁
- 비동기 코드에 익숙해져야 합니다. 콜백 함수, Promise,
async/await
등의 개념을 깊이 이해하는 것이 중요합니다. - 프로덕션 환경에서는 PM2와 같은 프로세스 매니저를 사용하여 애플리케이션을 관리하는 것이 좋습니다.
- Node.js는 서버뿐만 아니라 프론트엔드 개발 환경(webpack, Babel 등)을 구축하는 데에도 필수적으로 사용됩니다.
주의
단일 스레드 모델이기 때문에, CPU를 많이 소모하는 복잡한 연산은 애플리케이션 전체를 멈추게 할 수 있습니다. 이러한 작업은 별도의 워커 스레드를 사용하거나 다른 언어로 처리하는 것을 고려해야 합니다.