MVC(모델 - 뷰 - 컨트롤러)는 프로그램의 로직을 상호 연결된 3개의 요소로 나누어 사용자 인터페이스, 데이터 및 논리 제어를 개발하는 소프트웨어 아키텍처 패턴
소프트웨어 비즈니스 로직과 화면을 구분
MVC 패턴
Model : 데이터와 비즈니스 로직을 관리
View : 레이아웃과 화면을 처리
Controller : 명령을 모델과 뷰 부분으로 라우팅
2. 앱 소스코드 MVC 패턴으로 만들기
2-1. MVC 각 폴더 생성
models 폴더, views 폴더, controllers 폴더 생성
2-2. controller 파일 생성
controllers/posts.controller.js
controllers/users.controller.js
2-3. 유저 관련 로직 분류하기 - users.controller
user 관련 로직은 users.controller.js에 옮기기
// controllers/users.controller.js// 유저 모델 가져오기const model =require('../models/users.model');// 유저 전체 데이터 가져오기functiongetUsers(req, res){
res.send(model);}// 유저 1명 데이터 가져오기functiongetUser(req, res){const userId =Number(req.params.userId);const user = model[userId];if(user){
res.status(200).json(user);}else{
res.status(404).json({error:"No User Found"});}};// 유저 데이터 추가하기functionpostUser(req, res){if(!req.body.name){return res.status(400).json({error:"Missing user name"});}const newUser ={name: req.body.name,id: model.length
};
model.push(newUser);
res.json(newUser);};// 생성한 함수 내보내기
module.exports ={
getUsers,
getUser,
postUser
}
2-4. server.js에 users.controller 가져오기
// server.jsconst express =require('express');// 생성한 컨트롤러 모듈 가져오기const usersController =require('./controllers/users.controller');constPORT=4000;const app =express();
app.use(express.json());// 유저 관련 라우팅
app.get('/users', usersController.getUsers);
app.get('/users/:userId', usersController.getUser);
app.post('/users', usersController.postUser);
app.listen(PORT,()=>{
console.log(`Running on port ${PORT}`);});