봄날은 갔다. 이제 그 정신으로 공부하자

node.js로 웹서비스 만들기 (4. Router 분산을 통한 복잡도 관리) 본문

학습

node.js로 웹서비스 만들기 (4. Router 분산을 통한 복잡도 관리)

길재의 그 정신으로 공부하자 2023. 7. 3. 11:11

이제 슬슬 코딩에 들어가네요.

 

node.js는 기본적으로 시작 파일인 index.js에서 라우터 관리를 하는데 서비스를 개발하다보면 라우터가 100개 이상이 되는 경우가 자주 생깁니다. 이런 경우 index.js의 코드 복잡도가 매우 증가하므로 관리 차원에서 기능별로 쪼개서 관리할 필요가 있습니다.

 

이 글에서는 복잡도 관리를 위해 "setting" 라우터를 별도로 분리해서 관리하는 방법에 대해 설명합니다.

 

setting 경로 담당 파일 생성

"routers" 폴더 생성

"routers" 폴더에 setting.js 파일 생성

 

index.js에 setting 라우터 분산을 위한 코드 추가하기

index.js 파일에 setting 라우터 처리를 위한 코드를 아래와 같이 추가합니다.

아래와 같이 추가 시 이제 "setting" URL로 넘어오는 부분은 모두 setting.js에서 전담 처리함으로써 코드 복잡도를 분산할 수 있습니다.

const path = require('path');
const express = require('express');
const serveStatic = require('serve-static');
const cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
const expressSession = require('express-session');
var dbConfig = require(__dirname + '/config/db.js');
var settingRouter = require('./routes/setting') // setting 라우터 생성

...

const app = express(); // express

...

// 라우터 설정
var router = express.Router();
app.use('/', router);
app.use('/setting', settingRouter);

router.get('/', function(req, res){
    console.log('[GET] root');
    if(!req.session.user){
        res.render('login');
        return;
    }

    res.redirect('/enterance/dashboard');
});

...

app.listen(app.get("port"), () => {
    console.log(`${app.get("port")}에서 서버실행중.`);
});

// exports conn;
module.exports = conn;

 

setting 라우터 관련 처리를 위한 코드 작성

index.js에서 setting 라우터 처리가 끝났으므로 앞으로는 setting.js 파일에서 /setting 경로로 오는 요청을 처리 할 수 있습니다.

// setting.js
const express = require('express');
var router = express.Router();

router.get('/', function(req, res){
  res.send('setting root');
});

router.get('/myinfo', function(req, res){
  res.send('setting myinfo');
});

module.exports = router;

 

setting.js에서 DB 사용할 수 있도록 관련 코드 추가

index.js에서 아래와 같이 DB 관련 코드를 추가했지만 

 

// index.js

// mysql
var dbConfig = require(__dirname + '/config/db.js');
var conn = dbConfig.init();
dbConfig.connect(conn);

 

setting.js에서도 DB를 사용할 수 있도록 기존 코드에 DB 관련 토드를 아래와 같이 추가합니다.

// setting.js
const express = require('express');
var dbConfig = require('./config/db.js'); // db.js 추가
var router = express.Router();

// mysql 사용 추가
var conn = dbConfig.init();
dbConfig.connect(conn);


router.get('/', function(req, res){
  res.send('setting root');
});

router.get('/myinfo', function(req, res){
  res.send('setting myinfo');
});

module.exports = router;

 

 

 

Comments