node ch.09 _ Routing 리팩토링
모듈화된 라우팅 코드를 통합하는 컨트롤러를 만들 수 있다.
-
/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)
-
작동 확인
-
/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)
-
프로젝트 관리의 편의를 위해 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')