node ch.09 _ Routing 리팩토링

모듈화된 라우팅 코드를 통합하는 컨트롤러를 만들 수 있다.

  1. /router/index.js 파일 생성

    root페이지 처리하는 부분을 app.js 에서 분리

    index.js

    
     var express = require('express')
     var app = express()
     var router = express.Router()
     var path = require('path')
    
    
     router.get('/', function(req,res){
         console.log('indexjs / path loaded');
         res.sendFile(path.join(__dirname + "/../public/main.html"))
     });
    
    
     module.exports = router;
    
    

    app.js

        
     var express = require('express');
     var app = express();
     var bodyParser = require('body-parser');
    
     var main = require('./router/main');
     var email = require('./router/email');
     var router = require('./router/index');
    
    
    
     app.listen(3000, function() {
       console.log("start@ on port 3000");
     });
    
     app.use(express.static('public'))
     app.use(bodyParser.json())
     app.use(bodyParser.urlencoded({extended:true}))
     app.set('view engine', 'ejs')
    
     app.use(router)
     app.use('/main', main)
     app.use('/email', email)
    
    
    
  2. 작동 확인

  3. /email, /main 처리도 app.js 에서 분리

    index.js

     var express = require('express')
     var app = express()
     var router = express.Router()
     var path = require('path')
    
     var main = require('./main')
     var email = require('./email')
    
     router.get('/', function(req,res){
         console.log('indexjs . path loaded');
         res.sendFile(path.join(__dirname + "/../public/main.html"))
     });
    
     router.use('/main', main)
     router.use('/email', email)
    
     module.exports = router;
    
    
    

    app.js

     var express = require('express');
     var app = express();
     var bodyParser = require('body-parser');
    
     var router = require('./router/index');
    
    
    
     app.listen(3000, function() {
       console.log("start@ on port 3000");
     });
    
     app.use(express.static('public'))
     app.use(bodyParser.json())
     app.use(bodyParser.urlencoded({extended:true}))
     app.set('view engine', 'ejs')
    
     app.use(router)
    
    
  4. 프로젝트 관리의 편의를 위해 router 모듈들을 url 경로에 따라 각각 저장하는게 좋음

    /router/email.js -> router/email/email.js

    /router/main.js -> router/main/main.js

    index.js

     var main = require('./main/main')
     var email = require('./email/email')