middleWare는 코드의 구조내에서 중간 처리를 하기 위한 함수(혹은 모듈)이다.
middleWare는 크게 2가지로 나누어진다. 첫째는, 사용자가 직접 작성하는 것, 둘째는 Third-party에서 다운 받는 것이다. 각각에 대해서 살펴보자.
1) 사용자 정의 middleWare
- 다음은 index.js에서 작성한 middleWare함수이다.
(참고- 이전 글에서 function으로 작성했던 함수를 const로 수정했으니 참고바란다.)
함수의 정의를 살펴보자.
const middleWare = (req, res, next) => {
console.log("I'm MiddleWare");
next();
}
app.get('/', middleWare, handleHome);
즉, middleWare 함수를 통해, 메인 페이지인 localhost:4000에 접속했을 때,
"I'm MiddleWare"가 터미널 창에 뜨고 난 후, 콜백함수인 handleHome이 실행되도록 한다.
이 때, next()의 의미가 중요한데, next()가 다음 콜백함수를 실행하도록 넘어갈 수 있게 명령하기 때문이다.
만약 next()가 없으면 어떤 일이 발생할까?
I'm middleWare는 그대로 터미널에 뜨지만,
메인 페이지인 localhost:4000는 실행되지 않는다. 왜냐하면 middleWare 함수에서 다음 콜백함수로 넘어가지 못해서 handleHome이 실행되지 않기 때문이다.
이와 같이 다양한 middleWare 함수를 만들 수 있다.
이번에는 Express 홈페이지에 나온 예시를 통해 middleWare함수를 이해해보자.
다음에서는 requestTime이라는 middleWare함수가 작성되었다.
이 middleWare함수는 req.requestTime에 '현재 시각'을 저장한다.
app.use()는 특정 middleWare 함수를 실행하기 위한 메소드다. 이 경우, app.get('/')에서 requestTime이 쓰이기 위해서는 app.get('/')이전에 반드시 app.use(requestTime)이 실행되어야 한다.
app.get('/')이 실행되면, app.get('/') 내부의 responseText += 'Requested at:' + req.requestTime + '';
을 통해 현재 시각이 전달되고, 이것의 결과가 localhost:4000 메인 화면에 띄워지게 된다.
"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."