Node.js Express - Routing

 

라우팅은 HTTP 요청에 대한 응답하는 방법을 결정하는 것입니다.

웹 페이지를 확장시켜 나가면서 코드가 길어지면 유지 보수하기가 상당히 까다롭습니다.

그래서 노드에서 라우터를 분리하여 개발하는 것이 효율적입니다.

분리하여 어떻게 모듈화할지는 개발자 나름입니다.

 

프로젝트 구조

 

router - index.js / result.js

router 폴더를 만들어서 라우터를 분리했습니다.

 

index.js

 

var express = require('express');
var router = express.Router();

router.get('/', function (req, res) {
	res.render('index');
});

module.exports = router;

 

result.js

 

var express = require('express');
var router = express.Router();

router.get('/result', function (req, res) {
	var val1 = req.query.val1;
    var val2 = req.query.val2;
	res.render('result',{'val1':val1, 'val2':val2});
});

router.post('/result', function (req, res) {
	val1 = req.body.val1;
	val2 = req.body.val2;
	res.render('result',{'val1':val1, 'val2':val2});
});

module.exports = router;

 

express 모듈 호출

라우팅 모듈 호출

모듈화

export

모듈화할 라우팅 구조는 동일합니다.

 

app.js

 

// express
var express = require('express');
var app = express();

// ejs
app.set('views', __dirname + '/views');
app.set("view engine", "ejs");

// bootstrap
app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // bootstrap JS
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // bootstrap CSS

// post
app.use(express.urlencoded({extened: true}));

// router
var indexRouter = require('./router/');
var resultRouter = require('./router/result');

app.use('/', indexRouter);
app.use('/', resultRouter);

app.listen(3000, function () {
	console.log("3000포트로 노드서버 오픈!!");
})

 

 

미들웨어로 분리된 라우팅 파일을 읽어오면서 사용합니다.