본문 바로가기
Node.js

Node.js express()에대해 알아보자

by 개발적금 2022. 12. 21.

 

express()는 Node.js로 웹서버를 구현하기 위한 대표적인 라이브러리 이다.

Node.js의 내장 라이브러리인 http 혹은 net으로도 웹서버를 구축할수

있는데, 대부분 express로 구현을 합니다!

http , net으로 한번이라도 서버를 구축해보셨다면

express 사용에대한 감사함을 느낄거십니다!

 

Node.js의 내장모듈인 net을 이용하여 구현을 해보면

 

const net = require("net");

const PORT = process.env.SERVER_PORT || 3000;
const HOST = process.env.SERVER_HOST || "127.0.0.1";

=======================================================

const server = net.createServer((client)=>{
    client.setEncoding("utf8");
    const res = resFn(client);
    client.on("data",(chunk)=>{
        const req = reqFn(chunk)
        console.log(req);
    })
});

============================================================
server.on("connection",()=>{
    console.log("connected to client")
})

server.listen(PORT,HOST,()=>{
    console.log("Server Start");
});

 

내장모듈 net의 사용을 require로 불러온다고 생각하시면됩니다.

PORT와 HOST를 프로세스의 환경변수에있는것으로 등록하거나 없을시에 등록해주었습니다

 

const server = net.createServer(()=>{}) 를 통해 서버를 생성해주었고

setEncoding("utf8")을 통해 응답받은 data는 utf8언어로 번역하였습니다.

 

client.on("data",()=>{})

-> javascript에서 addEventListener로 생각하면 편합니다. data가 들어왔을시 콜백함수를 

실행합니다.

 

 

server.on("connection,()=>{}) 

-> 서버에 클라이언트가 connection 했을때 콜백함수를 실행합니다.

 

server.listen(PORT,HOST,()=>{}) 

-> 초기 서버를 열어놓는 작업입니다. 대기상태로 부르고있습니다. 서버를 대기시켜놓는다!

 

여기까지가 server.js 부분입니다. 간단하게

변수들을 선언해주었고 , createServer로 서버를 관리해주며,[.listen],[.on]

으로 connection과 data를 받아 request와 response를 해줍니다

 

이후에 req.js 파일과 res.js 파일을 만들어서

요청과 응답에대한 구분을 해줍니다..

 


express를 사용하기위해서는 먼저 설치를해야하는데,

npm init -y

npm install express

를 순차적으로 하면 설치가 됩니다.

 

기본적으로 http와net을 이용하여 서버를 구축하였을때

request,response 쪽에서 반복하여 작업하였던것들을

express를 사용함으로써 많이 줄일수 있고

그로인해 코드 가독성도 올라갑니다.

 

const express = require("express");
const app = express();
const PORT = process.env.SERVER_PORT || 3000;


app.listen(PORT,()=>{
    console.log("Server Start")
})

 

웹 서버 구현 시 내장 라이브러리인 http가 아니라 express가 사용되는 이유는 무엇인가?

라는 질문의 답을 간단하게 말하자면 가볍고, 코드를 분리하기 편하고,

가독성이 높고, 편리하기 때문이라고 할 수 있겠습니다.