
MVC(Model View Controller) Pattern이란?
소스 코드가 길어지면 복잡해지고 관리도 힘들어지기 때문에 사용하는 소스 코드를 정리하는 패턴
관련 프로그램 로직을 상호 연결된 3개의 요소로 나누는 사용자 인터페이스를 개발하는 데 일반적으로 사용되는 소프트웨어 아키텍처 패턴
사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 디자인 패턴이다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있다.

사용자가 controller를 조작하면 controller는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달한다.
MVC Pattern 사용 방법
views / controllers / models 폴더를 프로젝트에 생성한다.

controllers 폴더에 각 controller.js 파일을 생성한다.

controller에 맞는 로직을 함수로 만들어준다.
// users.controller.js
const User = require("../models/users.model");
// 전체 유저
function getUsers(req, res) {
res.json(User);
}
// 하나의 유저
function getUser(req, res) {
const userId = Number(req.params.userId);
const user = User[userId];
res.send(user);
}
// 유저 생성
function postUser(req, res) {
const newUser = {
id: User.length,
name: req.body.name,
};
User.push(newUser);
res.json(newUser);
}
// exports를 해준다.
module.exports = {
getUser,
getUsers,
postUser,
};
// 서버를 실행하는 파일
const express = require("express");
const usersController = require("./controllers/users.controller");
// controller 불러오기
const port = 3000;
const app = express();
app.use(express.json());
app.use((req, res, next) => {
console.log("Time", Date.now());
next();
});
app.get("/users", usersController.getUsers);
// 전체 유저 controller 사용
app.get("/users/:userId", usersController.getUser);
// 하나의 유저 controller 사용
app.post("/users", usersController.postUser);
// 유저 생성 controller 사용
app.get("/", (req, res) => {
res.send("Hello world");
});
app.listen(port, () => {
console.log("listening on 3000");
});
// models 폴더에 users.model.js 파일
const User = [
{
id: 0,
name: "happy",
},
{
id: 1,
name: "sad",
},
];
module.exports = User;