BACKEND
Node.js와 Express.js
White Been
2022. 8. 19. 22:32
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");
});