express(3)
효과적인 router 운용
실제 현업에서는 router가 수백 수천개가 될 수 있다.
이 router들을 파일별로 잘 정리정돈해둘 필요가 있다.
만약 create, update 등의 path 앞쪽에다가 ‘/topic’을 끼워넣어,
‘/topic/create’, ‘/topic/update’로 만들고싶다고 치자.
그러면, 관련된 path가 사용되고 있는 곳들을 일일이 찾아가서
전부 하나하나 다 바꿔줘야 한다.
이런 경우, express.Router를 사용하면 문제가 간단해질 수 있다.
// main.js
const topicRouter = require('./routes/topic');
app.use('/topic', topicRouter);
‘/topic’으로 시작하는 주소들에게 ‘topicRouter’라는 middleware를 적용하겠다는 뜻.
그리고 topic.js 이런식으로 따로 파일을 만들어서, ‘/topic’으로 시작하는 애들의 routing을
그 파일 내에서 잘 해결해주면 된다.
// topic.js
const express = require('express');
const router = express.Router();
router.get('/create', (req, res) => {
...
});
module.exports = router;
topic.js에서 express 모듈과 router 메소드들을 호출해주고,
기존에 app.get(‘/topic/create’, ~ ), app.post(‘/topic/create_process’, ~ ) 이런 식으로
routing 되어있던 애들을
router.get(‘/create’, ~ ), router.post(‘/create_process’, ~ ) 이런 식으로 바꿔주면 된다.
여기서 중요한 것은, router 파일 안에서는 ‘/topic’을 path에서 전부 지워줘야 한다는 것.
main.js에서 app.use(‘/topic’, topicRouter)로 ‘/topic’이라는 path를 이미 지정해줬기 때문.
바깥에서 path를 저렇게 이미 지정해줬으면, router 내부에서는 해당 path를 제외해줘야 함.
그리고 파일의 맨 마지막에는 router를 export하는 문장을 적어준다.
그러면 이 파일은 topicRouter로써 main.js에서 호출될 수 있는 것.
express generator
사실, express를 이용해서 프로젝트를 진행할 때는
해야할 일들이 거기서 거기이기 때문에, 초반부는 거의 유사하다.
그래서 express에서 기본적인 틀을 제공해주는 기능이 있는데,
그 기능이 바로 express generator.
create-react-app이랑 비슷한 느낌.
npm install express-generator -g
express -h
// help. 어떻게 사용하면 되는지에 관한 설명
express myapp
// 현재 머물고 있는 디렉토리 안에
// myapp이라는 디렉토리가 생성되고, 그 안에 express가 세팅된다.
cd myapp
npm install
// package.json에 준비된 dependency들을 설치
이렇게 하고 나면 app.js라는 이름으로 기본 파일이 생성된다.
views라는 폴더에 가보면 template들이 준비되어있는데,
걔네는 jade라는 별도의 언어로 작성되어있다.
jade는 html을 더 적은 코드로 작성할 수 있게 해주는 언어인데,
이런 것을 ‘template engine’이라고 한다.
express와 종종 함께 사용되는 template engine은 ‘pug’가 있다.
그 밖에도 static file 처리, 404 not found 처리, error 처리 등
기본적인 세팅이 모두 되어있는 모습을 확인할 수 있고,
그 세팅을 바탕으로 express 작업을 시작하면 된다.