본문 바로가기
프론트엔드/javascript

Node.js vs Express.js

by 느바 2025. 1. 5.
반응형

Node.js vs Express.js

1. Node.js

Node.js는 JavaScript를 사용하여 서버 측 애플리케이션을 개발할 수 있게 해주는 런타임 환경입니다.

  • 주요 특징:
    1. Chrome V8 엔진 기반: Node.js는 빠른 JavaScript 실행 속도를 제공하는 Google Chrome의 V8 엔진 위에서 동작합니다.
    2. 비동기 I/O: 이벤트 루프와 비동기 I/O를 사용해 높은 처리량을 지원하며, 파일 읽기, 네트워크 요청 등을 효율적으로 처리합니다.
    3. 단일 스레드: 단일 스레드 기반으로 동작하면서도 비동기 방식으로 많은 요청을 처리할 수 있어, 경량 서버 개발에 적합합니다.
    4. 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를 빠르게 개발할 수 있습니다.

  • 주요 특징:
    1. 간결한 라우팅: 다양한 HTTP 메서드(GET, POST 등)와 URL 패턴을 쉽게 정의할 수 있는 라우팅 시스템을 제공합니다.
    2. 미들웨어: 요청과 응답 객체를 조작하거나 추가 작업을 수행할 수 있는 미들웨어 구조를 지원합니다. 
    3. 유연성: 필요한 기능만 추가하는 모듈화된 구조로 설계되었습니다.
    4. 템플릿 엔진 통합: 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를 구축할 수 있게 도와주는 프레임워크입니다. 이 둘을 함께 사용하면 유연하고 강력한 서버 애플리케이션을 빠르게 개발할 수 있습니다.

 

https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Introduction

 

Express/Node introduction - Learn web development | MDN

In this first Express article we answer the questions "What is Node?" and "What is Express?", and give you an overview of what makes the Express web framework special. We'll outline the main features, and show you some of the main building blocks of an Exp

developer.mozilla.org

https://expressjs.com/

 

Express - Node.js web application framework

Express is a fast, unopinionated, minimalist web framework for Node.js, providing a robust set of features for web and mobile applications.

expressjs.com

 

반응형

'프론트엔드 > 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