Node.js는 서버 사이드 애플리케이션을 구축하기 위한 오픈소스 런타임 환경
JavaScript가 브라우즈에서만 실행되던 한계를 넘어 서버에서도 JavaScript를 사용할 수 있게 해줌
웹 애플리케이션의 프론트엔드와 백엔드를 동일한 언어로 개발할 수 있게 되었음
Node.js란?
- 이벤트 기반, 논블로킹 I/O 모델을 사용하는 서버 사이드 자바스크립트 런타임
- 빠르고 효율적인 네트워크 애플리케이션을 구축하는 데 중점을 둠
- Node.js는 Google의 V8 JavaScript엔진을 기반으로 하며, 크로스 플랫폼을 지원함
Node.js 특징
비동기 I/O
- 비동기적으로 I/O작업을 처리함
- 블로킹 없이 높은 성능을 유지할 수 있음
이벤트 기반
- 이벤트 루프를 사용하여 이벤트를 처리함
- 서버가 많은 클라이언트 요청을 효율적으로 처리할 수 있게 함
단일 스레드
- 단일스레드에서 실행되지만, 내부적으로 많은 비동기 작업을 관리하여 높은 성능
모듈화
- CommonJS 모듈 시스템을 사용하여 코드를 모듈화하고 재사용성을 높임
NPM
- Node Package Manager(NPM)은 Node.js의 패키지 관리자
- 많은 오픈 소스 패키지를 쉽게 설치하고 관리할 수 있게 해줌
Node.js 애플리케이션 실행
// app.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
- 코드를 실행하려면 터미널에
node app.js
명령어를 입력하면 된다. http://127.0.0.1:3000
을 열면 "Hello, World!"메세지를 볼 수 있다.
주요 모듈
- http: HTTP 서버와 클라이언트를 생성할 수 있습니다.
- fs: 파일 시스템에 접근하여 파일을 읽고 쓸 수 있습니다.
- path: 파일과 디렉토리 경로를 조작할 수 있습니다.
- os: 운영 체제 관련 정보를 가져올 수 있습니다.
- events: 이벤트 기반 프로그래밍을 지원합니다.
Express.js와 같은 프레임워크
Node.js로 웹 애플리케이션을 구축할 때, Express.js와 같은 프레임워크를 사용하면 더욱 편리하다.
Express.js는 라우팅, 미들웨어 관리 등을 쉽게 할 수 있게 도와준다.
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
'Backend · Infra' 카테고리의 다른 글
[ElasticSearch] nested Type (0) | 2024.07.10 |
---|---|
[ElasticSearch] Query (0) | 2024.07.09 |
싱글톤 패턴 Singleton Pattern (0) | 2024.07.09 |
MSA (Microservice Architecture) (0) | 2024.07.03 |
DB index에 대한 이해 (0) | 2024.06.16 |