nodejs

[node.js/express] 라우터 분리하기

퓨처디벨로퍼 2021. 12. 5. 01:25
var router = express.Router();
router.get('/r1',function(req, res){
  res.send('Hello /p1/r1');
})
router.get('/r2',function(req, res){
  res.send('Hello /p1/r2');
})
app.use('/p1',router);

 

별도의 파일로 분리

 

 

var p1 = require('./routes/p1');   //경로의 파일을 요청
app.use('/p1',p1);                 // '/경로' 로 들어오면 p1에 매칭

//main.js

var express = require('express');
var route = express.Router();
route.get('/r1',function(req, res){
  res.send('Hello /p1/r1');
})
route.get('/r2',function(req, res){
  res.send('Hello /p1/r2');
})

module.exports = route;

//routes/p1

 

고립된 상태

위의 방식에서는, main.js에서 만들어진 어떤 정보나 로직을 p1.js에서 사용할 수 없다. 

 

var p1 = require('./routes/p1')(app); 
app.use('/p1',p1);

//main.js

 

  -  require를 통해 가져온 것은 함수 -> 함수를 호출할때 app 객체 전달.

 

module.exports = function(app){
  var express = require('express');
  var route = express.Router();
  route.get('/r1',function(req, res){
    res.send('Hello /p1/r1');
  })
  route.get('/r2',function(req, res){
    res.send('Hello /p1/r2');
  })
   app.get('/p3/r1',function(req,res){
     res.send('Hello /p3/r1');
   })
   return route;
}; //라우트가 직접전달 되는것이 아니고 함수로 만드는 것.