0. application-level middleware to router-level middleware by using express.Route( )
1. divide each router and make it as file. : 장점과 단점.
단점 : 객체나 함수의 단절을 의미한다.
main js파일에서 객체를 전달할 때 : p1은 /routes/p1에서 가져온 함수를 의미하고, 이 함수의 매개변수로 객체 app을 전달한다.
var express =require('express');var app =express();var p1 =require('./routes/p1')(app);//p1파일에서 모듈을 가져온다.app.use('/p1',p1);//'/p1' 페이지로 접속해서 들어오는 것들은 'p1'이라는 라우터가 처리한다.var p2 =require('./routes/p2');app.use('/p2',p2);app.listen(3003,function(){console.log('Connected port 3000');});
매개변수가 없을 때 :
var express =require('express');var router =express.Router();router.get('/r1',(req,res)=>{res.send('Hello /p1/r1');});router.get('/r2',(req,res)=>{res.send('Hello /p1/r1');});module.exports= router;//router를 내보낸다.
매개변수가 있을 때 : 함수 생성!
router를 리턴하는 것은 같지만 module.exports = function(app) {...} 함수로 만들어서 이 함수 내에서 코드를 구현한다. 이로써, 전달받은 app 객체를 통해 p1페이지 뿐만 아니라 p2,p3 등에 해당하는 라우트도 구현할 수 있다.
module.exports=function(app){//함수를 만든다. 매개변수로 전달되는 app을 받아서 처리한다.var express =require('express');var router =express.Router();router.get('/r1',(req,res)=>{res.send('Hello /router/r1'); });router.get('/r2',(req,res)=>{res.send('Hello /router/r1'); });return router;};
when it comes to router file, it has to be synchronized between main js file and router file. For instance, every file in express framework, it needs express module. Not only in main js, but also in router file, it requires express.