✏️ Node.js 기반 Express 의 MVC 패턴
- MVC 는 Model View Controller 의 약자로 서버 개발에 대한 디자인 패턴을 의미한다.
- RestAPI 서버를 구현할 때도 MVC 패턴을 사용하지만 사실상 View 는 사용되지 않는다는 특징이 있다.
✏️ 적용하기 1. commen js 방식
📍 controller.js
exports.mainView = function (req, res) {
console.log("Controller 실행")
res.send("Hello World");
};
📍 index.js
- controller 에서 구현한 api 로 요청을 라우팅하는 모듈이다.
- 이 모듈에서 제공중인 api 를 한눈에 볼 수 있다.
const router = require("express").Router();
const controller = require("./controller");
router.get("/main", controller.mainView);
module.exports = router;
📍 app.js
- express 서버의 본체로 핵심적인 역할을 담당하고, 여러 미들웨어를 관리한다.
- 이제 서버를 실행하면 8080 포트로 api 를 호출할 수 있다.
const express = require("express"),
app = express(),
http = require('http').createServer(app),
port = 8080,
routes = require("./routes/index");
app.use(routes);
http.listen(port);
- cors 를 비롯한 간단한 모듈들을 추가해줬다.
const express = require("express"),
app = express(),
http = require('http').createServer(app),
port = 8080,
cors = require('cors'),
starter = require('./lib/starter'),
routes = require("./routes/index");
starter.start('HELLO EXPRESS');
app.use(routes, cors());
http.listen(port);
✏️ 적용하기 2. ESM 방식
📍 controller.js
export function main (req, res) {
res.render('main');
}
📍 route.js
import express from 'express';
import * as controller from './controller.js';
const router = express.Router();
router.get("/", controller.main);
export { router as routes };
📍 app.js
import {routes} from './routes/route.js';
import {start} from './lib/figlet.js';
import express from 'express';
import path from 'path';
const app = express(),
__dirname = path.resolve(),
port = 3000;
app.set('view engine', 'pug')
app.set('views', 'my_app/views')
app.use(routes);
app.listen(port, () => {
start('EXPRESS START')
console.log('Server is running on', port, 'port');
});