Node.js

static 미들웨어함수

fabxoe 2019. 10. 2. 12:08
const express = require('express');
const logger = require('morgan');
const cookieParser = require('cookie-parser')
const app = express();
const session = require('express-session')
const flash = require('connect-flash')

app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.use(cookieParser('secret code'));

위 코드는 app.js 파일의 일부이다.

여기서 express내장 미들웨어함수들의 순서를 보자.

 

express.static미들웨어의 위치가 express.json과 express.urlencoded 미들웨어보다 위이다.

그 이유가 있다. 참고로 static 미들웨어만 독특하게도 일반적인 미들웨어와는 다르게 next()를 하지 않는다고 한다.

언제 next()를 하나하면, 지정한 폴더 안에 원하는 정적파일이 없을때만 next()를 한다고 한다.

즉 다음 라인에 위치한 미들웨어들을 실행시키지 않는다.

 

정적 파일을 찾았을 땐, 동적인 페이지를 만들필요가 없어졌으니 파싱도 할 필요가 없어졌다.
다음 라인의 미들웨어를 실행시킬 필요가 없는 것이다.

 

express 내장 미들웨어와 역할
express.static 설정한 폴더 내의 정적파일에 접근한다.

express.json와 express.urlencoded

express.json와 express.urlencoded

요청의 body에 담긴내용을 파싱해서 동적으로 페이지에 반영한다.