프로그래밍/Node.js

Node.js) Express 미들웨어 4 (라우터를 분리하는 방법)

이불이! 2019. 4. 26. 01:16
728x90

왜 indexRouter와 usersRouter를 나눌까 ?

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs

그 이유는 나중에 서비스 규모가 점점 커지면 라우터의 규모도 점점 커진다.

라우터를 미리 나누지 않으면 파일 하나가 길어지기 때문이다. 별 이유없음..ㅋ

지금 라우터를 분리하는 법에 대해 알아보려 한다.


app.js

기존에 app.get 라우팅을 분리하였다.

//indexRouter모듈 추가
const express = require('express') ;
const logger = require('morgan') ; 
const cookieParser = require('cookie-parser') ;
const session = require('express-session') ;
const flash = require('connect-flash') ;
const path = require('path') ;
 
const indexRouter = require('./routes/index') ; //모듈 추가
const usersRouter = require('./routes/users') ; //모듈 추가
const app = express() ;
 
app.use(logger('dev')) ;
app.use(express.static(path.join(__dirname, 'public'))) ; 
app.use(express.urlencoded({ extended: false })) ;
app.use(cookieParser('secret code')) ;
 
 
    resave: false
    saveUninitialized: false
    secret: 'secret code'
    cookie: {
        httpOnly: true
        secure: false,
    },
})) ;
 
 
    console.log('첫번째 미들웨어') ;
    next() ;
}, (req, res, next) => {
    console.log('두번째 미들웨어') ;
    next() ;
}) ;
 
app.use('/', indexRouter) ;
app.use('users', usersRouter) ;
 
module.exports = app ;
 
//npm i express-session connect-flash 설치
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs

 

index.js

const express = require('express') ;
const router = express.Router() ; //express 객체에서 Router를 꺼내와 모듈로 만들었다.
 
router.get('/'function(req, res, next) {
  res.render('index', {title: 'Express' }) ;
}) ;
 
router.get('/', (req, res) => {
  console.log('세번째 미들웨어') ;
  res.send('Hello express') ;
}) ;
 
router.get('/posts', (req, res) => {
}) ;
 
router.get('/comments', (req, res) => {
}) ;
 
router.get('/list', (req, res) => {
}) ;
 
router.post('/', (req, res) => {
}) ;
 
module.exports = router ;
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs

 

users.js

var express = require('express');
var router = express.Router();
 
 // GET /users/
 router.get('/users', (req, res) => {
  console.log('네번째 미들웨어') ;
  res.send('Hello users') ;
}) ;
 
// DELETE /users
router.delete('/users', (req, res) => {
}) ;
 
module.exports = router;
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs

 

그 중 users로만 가는 것을 또 분리하였다.