본문 바로가기

BACKEND

Node.js와 Express.js

Node.js

오픈소스, 크로스 플랫폼이며, 개발자가 모든 종류의 서버 사이드 도구들과 어플리케이션을 JavaScript로 만들수 있도록 해주는 런타임 환경이다.

 

Node.js의 장점

  • 퍼포먼스 측면에서 뛰어나다. (물론 사용하는 개발자에 따라 다르다 슈마허 vs 나 자동차 경주)
  • 순수한 자바스크립트 코드 사용하기 때문에 기존에 JavaScript를 사용한 프론트엔드 개발자에게 익숙한 개발 환경을 제공한다.
  • npm(노드패키지매니저) 수 천만개의 재사용 가능한 패키지를 사용할 수 있다.
  • 많은 사람들이 사용하므로 의견 공유 활발 & 다양한 경험을 통해 여러 문제들을 해결할 수 있는 실마리를 얻을 수 있다.

 

Node.js의 특징

  • 이벤트 기반(event-driven) non-blocking I/O 모델 사용
  • 싱글쓰레드
  • 프레임워크, 프로그래밍언어가 아님

 

Express

Node.js를 기반으로 만들어진 프레임워크로 Node.js의 이벤트를 기반 원칙과 접근방식을 이용하여 웹어플리케이션을 만드는데 사용된다.

 

 

Feature  Express.js  Node.js
Usage It is used to build web-apps using approaches and principles of Node.js. It is used to build server-side, input-output, event-driven apps.
Level of features More features than Node.js. Fewer features.
Building Block It is built on Node.js. It is built on Google’s V8 engine.
사용언어 JavaScript C, C++, JavaScript
Framework/Platform Framework based on Node.js. Run-time platform or environment designed for server-side execution of JavaScript.
Controllers Controllers are provided. Controllers are not provided.
Routing Routing is provided. Routing is not provided.
Middleware Uses middleware for the arrangement of functions systematically server-side. Doesn’t use such a provision.
Coding time It requires less coding time. It requires more coding time.

 

코드 비교

//Node.js

//requiring the module
const http = require("http");

//creating server object
const server = http.createServer((req, res) => {
  res.setHeader('Content-Type', 'text/html');
  res.write("<html>")
  res.write("<head><title>this is title</title><head>");
  res.write("<body><h2>Hello from Node.js server!!</h2></body>");
  res.write("</html>");
});

//server setup
server.listen(3000, () => {
  console.log("Server listening on port 3000")
});
//Express.js

//requiring the module
const express = require("express");
const app = express();

//route handling
app.get("/", (req, res) => {
  res.send("<h2>Hello from Express.js server!!</h2>");
});

//server setup
app.listen(8080, () => {
  console.log("server listening on port 8080");
});

 

Routing

//Node.js 

//requireing the module
const http = require("http");

//creating server object
const server = http.createServer((req, res) => {
  const url = req.url;

  if (url === "/") {
    res.write("<html>");
    res.write("<head><title>title</title><head>");
    res.write("<body><h2>Hello from Node.js server!!</h2></body>");
    res.write("</html>");
    return res.end();
  }

  if ( url === "/about") {
    res.write("<html>");
    res.write("<head><title>title</title><head>");
    res.write("<body><h2>Hello from Node.js server!!</h2></body>");
    res.write("</html>");
    return res.end();
  }
});

//server setup
server.listen(3000, () => {
  console.log("Server listening on port 3000")
});
//Express.js

//requring module
const express = require("express");
const app = express();

//handling "/" request
app.get("/", (req, res) => {
  res.send("<h2>Hello from Express.js server!!</h2>");
});

//handling "/about" request
app.get("/about", (req, res) => {
  res.send("<h2>title- Express.js</h2>");
});

//server setup
app.listen(8080, () => {
  console.log("server listening on port 8080");
});

'BACKEND' 카테고리의 다른 글

[Express.js] res.json vs res.send vs res.end  (0) 2022.08.19
[Express.js] 미들웨어  (0) 2022.08.19
[Express.js] 에러 핸들링  (0) 2022.08.19