홈 화면 index.js파일로 분리.
1. routes 폴더 안에 index.js 파일 생성.
2. index.js 파일에 홈페이지 코드 이주.(기본 셋팅)
< index.js >
app.get('/', (request, response) => {
var title = 'Welcome';
var description = 'Hello, Node.js';
var list = template.list(request.list);
var html = template.HTML(title, list,
`<h2>${title}</h2>${description},
<img src="/images/hello.jpg" style="width:400px; display:block; margin-top:10px">`,
`<a href="/topic/create">create</a>`
);
response.send(html);
})
var express = require('express');
var router = express.Router();
2) 맨 아래
module.exports = router;
< main.js >
1) 맨 위에 추가.
var indexRouter = require('./routes/index')
2) 중간에 router.use 라우터 추가.
router.use('/', indexRouter);
3. 필요한 모듈들 추가.
< index.js >
var template = require('../lib/template.js');
4. 최종 코드
< main.js >
const express = require('express')
const app = express()
var fs = require('fs');
var bodyParser = require('body-parser')
var compression = require('compression')
var indexRouter = require('./routes/index')
var topicRouter = require('./routes/topic')
app.use(express.static('public'))
app.use(bodyParser.urlencoded({ extended: false }))
app.use(compression());
app.get('*', (request, response, next) => {
fs.readdir('./data', (error, filelist) => {
request.list = filelist;
next();
})
})
// index.js파일에 홈페이지 화면 라우터 분리
app.use('/', indexRouter);
app.use('/topic', topicRouter);
app.use(function (req, res, next) {
res.status(404).send('Sorry cant find that')
});
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
})
app.listen(3000, () => {
console.log('Example app listening on port 3000!')
})
< index.js >
// 홈 화면 코드 이주.
var express = require('express');
var router = express.Router();
var template = require('../lib/template.js');
router.get('/', (request, response) => {
var title = 'Welcome';
var description = 'Hello, Node.js';
var list = template.list(request.list);
var html = template.HTML(title, list,
`<h2>${title}</h2>${description},
<img src="/images/hello.jpg" style="width:400px; display:block; margin-top:10px">`,
`<a href="/topic/create">create</a>`
);
response.send(html);
})
module.exports = router;
라우터를 파일별로 분리한 이유!
: main.js 코드는 활용도가 높은 코드이다.
이 코드가 복잡하면 집 대문이 복잡한 것 마냥 좋지 않다.
따라서 router 라는 기능을 활용하여 깔끔하게 파일로 서로 연관된 라우터들을 쪼개어 정리 정돈 한 것.