노드

노드 Express 웹 서버 시작하기

포칼이 2023. 4. 17. 15:47

Express 소개

http 모듈로 웹 서버를 만들 때 코드가 보기 좋지 않고, 확장성도 떨어짐

  • 프레임워크로 해결
  • 대표적인 것이 Express, Koa, Hapi
  • 코드 관리도 용이하고 편의성이 많이 높아짐

 

package.json 만들기

직접 만들거나 npm init 명령어로 생성하면 된다.

  • nodemon은 소스 코드 변경 시 서버를 재시작해준다.

 

//package.json
{
  "name": "learn-express",
  "version": "0.0.1",
  "scripts": {
    "start": "nodemon app"
  },
  "devDependencies": {
    "nodemon": "^2.0.3"
  },
  "dependencies": {
    "cookie-parser": "^1.4.5",
    "express": "^4.17.1",
    "express-session": "^1.17.1",
    "morgan": "^1.10.0"
  }
}

이것을 package.json이란 파일을 만들어서 직접 적어도(직접 작성한 후에는 npm i를 해주자) 되고 아니면 

npm i express

npm i -D nodemon

으로 만들어 주면 된다.

 

app.js 작성하기

서버 구동의 핵심이 되는 파일

  • app.set('port', 포트)로 서버가 실행될 포트 지정
  • app.get('주소', 라우터)로 GET 요청이 올 때 어떤 동작을 할지 지정
  • app.listen('포트', 콜백)으로 몇 번 포트에서 서버를 실행할지 지정

 

//app.js
const express = require('express');
const path = require('path');

const app = express();
app.set('port', process.env.PORT || 3000);

app.get('/', (req, res) => {
  res.send('Hello, Express');
  //res.sendFile(path.join(__dirname, '/index.html'));
});

app.listen(app.get('port'), () => {
  console.log(app.get('port'), '번 포트에서 대기 중');
});

 http 모듈로 서버를 만들때와 거의 비슷하다.

그리고 요청했을 때의 url이 밖으로 꺼내져 있는 것을 볼 수 있다.

이말은 즉슨, http 때처럼 요청에 대한 처리를 if ~else if 로 처리해 주지 않아도 된다는 소리다.

 

또한 nodemon을 통해 실행하면 코드의 변경이 있을 때마다 서버를 껏다 켯다 하지 않아도 된다. 실행할때 nodemon app을 하면 된다.