반응형
Node.js vs Express.js
1. Node.js
Node.js는 JavaScript를 사용하여 서버 측 애플리케이션을 개발할 수 있게 해주는 런타임 환경입니다.
- 주요 특징:
- Chrome V8 엔진 기반: Node.js는 빠른 JavaScript 실행 속도를 제공하는 Google Chrome의 V8 엔진 위에서 동작합니다.
- 비동기 I/O: 이벤트 루프와 비동기 I/O를 사용해 높은 처리량을 지원하며, 파일 읽기, 네트워크 요청 등을 효율적으로 처리합니다.
- 단일 스레드: 단일 스레드 기반으로 동작하면서도 비동기 방식으로 많은 요청을 처리할 수 있어, 경량 서버 개발에 적합합니다.
- npm (Node Package Manager): 방대한 오픈소스 라이브러리와 패키지를 제공하는 npm을 통해 애플리케이션 개발 속도를 높일 수 있습니다.
- 사용 사례:
- 실시간 애플리케이션 (채팅, 실시간 알림)
- RESTful API 서버
- IoT 애플리케이션
- 서버리스 아키텍처
간단한 Node.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('Server is running on http://localhost:3000');
});
2. Express.js
Express.js는 Node.js 위에서 동작하는 웹 애플리케이션 프레임워크입니다. 간단하면서도 강력한 API를 제공하여, 웹 서버와 RESTful API를 빠르게 개발할 수 있습니다.
- 주요 특징:
- 간결한 라우팅: 다양한 HTTP 메서드(GET, POST 등)와 URL 패턴을 쉽게 정의할 수 있는 라우팅 시스템을 제공합니다.
- 미들웨어: 요청과 응답 객체를 조작하거나 추가 작업을 수행할 수 있는 미들웨어 구조를 지원합니다.
- 유연성: 필요한 기능만 추가하는 모듈화된 구조로 설계되었습니다.
- 템플릿 엔진 통합: Pug, EJS 등과 같은 템플릿 엔진을 쉽게 통합할 수 있습니다.
- 사용 사례:
- RESTful API 개발
- 웹 애플리케이션 서버
- 마이크로서비스 아키텍처의 서비스 개발
간단한 Express.js 코드 예제:
const express = require('express');
const app = express();
// 라우팅 설정
app.get('/', (req, res) => {
res.send('Hello, Express.js!');
});
// 서버 시작
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
실습 :
npm init -y
으로 Node.js 프로젝트를 초기화하고 프로젝트에 필요한 데이터들을 package.json 이라는 파일에 작성한다.
npm install express
로 express를 설치한다.
server.js 파일에 아래와 같이 작성한다.node server.js
로 서버를 가동한다.
const express = require('express');//node.js의 프레임워크인 express모듈 불러오기
const path = require('path');//파일 시스템의 경로를 다루기 위해 사용되는 path 모듈 불러오기
const app = express();//express 함수를 호출해서 express 애플리케이션 객체를 생성
const PORT= 3000;
// *서버가 폴더에 접근할 수있는 경로를 작성*
// use : express애플리케이션에 미들웨어 추가
// express.static : 정적 파일을 제공하는 미들웨어 함수
// path.join : 파일 경로를 편리하게 나타낼 수 있음 path.join('src', 'components','Content.js') -> /src/components/Content.js
app.use(express.static(path.join(__dirname, '..')));
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, '..', 'index.html'));
});
app.listen(PORT, () => {
console.log('START SERVER');
});
Node.js와 Express.js의 관계
- Node.js는 서버를 구동하기 위한 런타임 환경입니다. Express.js는 Node.js에서 서버 개발을 쉽게 할 수 있도록 도와주는 프레임워크입니다.
- Node.js로도 서버를 개발할 수 있지만, Express.js는 라우팅, 요청 처리, 미들웨어 관리 등을 제공하여 개발자의 생산성을 크게 향상시킵니다.
Node.js와 Express.js의 비교
특징 | Node.js | Express.js |
---|---|---|
역할 | 서버 측 런타임 환경 | 웹 프레임워크 |
기본 기능 | 파일 I/O, 네트워크 요청 처리 등 | 라우팅, 미들웨어, 요청/응답 처리 |
유연성 | 더 많은 코드 작성이 필요 | 기본적인 웹 애플리케이션 기능 제공 |
추상화 수준 | 낮음 | 높음 |
사용 예시 | HTTP 서버, 실시간 채팅, IoT 애플리케이션 | REST API, 웹 애플리케이션, 마이크로서비스 |
결론
Node.js는 서버 측 JavaScript 실행을 가능하게 해주는 기반 기술이며, Express.js는 Node.js 위에서 간단하고 효율적인 웹 서버와 API를 구축할 수 있게 도와주는 프레임워크입니다. 이 둘을 함께 사용하면 유연하고 강력한 서버 애플리케이션을 빠르게 개발할 수 있습니다.
반응형
'프론트엔드 > javascript' 카테고리의 다른 글
Web Crypto API (1) | 2025.01.19 |
---|---|
requestAnimationFrame vs setInterval (0) | 2025.01.12 |
History API (0) | 2025.01.04 |
Fetch API (0) | 2025.01.04 |
require (2) | 2025.01.03 |