본문 바로가기
JavaScript

Express로 서버 만들기

by ma_ro 2020. 2. 20.

공식페이지

https://expressjs.com/ko/

기본 설정

const express = require('express'); //express 불러오기
const app = express(); //app 변수를 선언해서 express 실행하기

// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
  res.send('hello world');
});

기본 라우팅의 예. require함수를 통해 'express' 라는 폴더를 찾는다.
처음에는 기존 파일들 중에서, 못 찾으면 node_modules 안에서.

 

// express/index.js 파일
module.exports = require('./lib/express');
/**
 * Module dependencies.
 */
// /lib/express.js 파일
var bodyParser = require('body-parser')
var EventEmitter = require('events').EventEmitter;
var mixin = require('merge-descriptors');
var proto = require('./application');
var Route = require('./router/route');
var Router = require('./router');
var req = require('./request');
var res = require('./response');

이런 식으로 블록처럼 작은 부분으로 나눠져서 구성되어 있다.

실행

app.listen(4000);

express를 실행한 app 변수에 listen 함수를 통해서 4000포트에 서버를 열 수 있다.

 

node index.js

첫번째 실행 방법은 터미널에서 node를 통해 index.js 파일을 실행하는 것.

 

  "scripts": {
    "start": "node index.js"
  }

두번째 실행방법은 package.json에서 scripts항목에 명령어를 지정해 놓을 수 있는데 여기에 index 실행 명령어를 넣어 놓고 이 스크립트를 실행하는 것이다.

 

npm start

그럼 npm을 통해서 미리 지정한 모든 명령어가 실행이 가능하다.

종료는 Ctrl + C.

 

const PORT = 4000;

function handlelisetning() {
    console.log(`Lisetning on: http://localhost:${PORT}`);    
}

app.listen(PORT, handlelisetning);

위와 같은 방식을 통해 서버가 열릴 때 특정 함수 ( 여기서는 handleLisetning )을 실행시킬 수도 있다.

 

response

// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
  res.send('hello world');
});

클라이언트의 GET request에 대해 response 설정을 해줄 수 있다. 여기서는 "/" 페이지 ( root 페이지 ) 에 대한 요청이 왔을때 'hello world' 라는 응답이 가도록 설정이 되어있다. 실제 코드에서는 html 파일 등을 응답하도록 한다.

 

nodemon

서버 페이지의 변경사항이 있을 때마다 서버를 재실행해주어야 변경사항이 적용되는 불편함이 있다. 서버를 수동으로 재시작할 필요없이 변경사항이 있으면 자동으로 서버를 재시작해주는 패키지가 nodemon이다. 역시 npm으로 설치한다.

 

npm install nodemon -D

여기서 -D 옵션을 집어 넣는다. 이건 nodemon이 개발자를 위한 dependency이기 때문이다.

 

  "devDependencies": {
    "nodemon": "^2.0.2"
  }

package.json에는 "dependencies"가 아닌 "devDependencies"로 들어간다.

 

nodemon --exec node index.js

실행은 nodemon --exec 로 실행.

 

nodemon --exec babel-node index.js --delay 2

babel과 같이 사용 할 경우. babel이 변환할 시간이 필요하기 때문에 시간을 안주면 서버가 2번 실행된다.
( 변경 사항에 1번, babel이 변환한 것에 대해 1번 )
따라서 delay 옵션을 줘서 babel이 변환할 시간을 준다.

'JavaScript' 카테고리의 다른 글

Middleware part 1.  (0) 2020.02.20
Babel  (0) 2020.02.20
<canvas> height와 width 렌더링 왜곡 문제  (0) 2020.02.19
express.js 설치  (0) 2020.02.19
Node.js 개요  (0) 2020.02.18

댓글