JiSoo's Devlog
[Node.js] 모델 뷰 컨트롤러(MVC) 본문
패턴이란 다른 기능에 따라 코드를 논리적으로 나누는 것을 의미한다
MVC란?
MVC는 Model View Controller의 약자로 모델, 뷰, 컨트롤러와 관련되어 있다
모델은 객체나 데이터를 나타내는 코드의 한 부분으로 데이터 관련 작업을 할 수 있게 한다
뷰는 사용자가 보게 되는 화면을 책임지는데 애플리케이션 코드와 분리되어 있고 뷰를 생성하기 위해 템플릿 엔진에 주입하는 데이터와 아주 조금만 통합되어 있다
컨트롤러는 모델과 뷰 사이의 연결점으로 모델과 함께 데이터를 저장하거나 저장 프로세스를 유발하거나 뷰에서 가져온 데이터를 전달한다
라우트는 어떤 경로에 따른 http 메서드에 따라 어떤 컨트롤러 코드를 실행할지 정의한다
컨트롤러는 작업할 모델과 렌더링할 뷰를 정의하는 역할을 하는데 이게 바로 패턴!
컨트롤러 추가
const products = [];
exports.getAddProduct = (req, res, next) => {
res.render("add-product", {
pageTitle: "Add Product",
path: "/admin/add-product",
formsCSS: true,
productCSS: true,
activeAddProduct: true,
});
};
exports.postAddProduct = (req, res, next) => {
products.push({ title: req.body.title });
res.redirect("/");
};
exports.getProducts = (req, res, next) => {
const products = adminData.products;
res.render("shop", {
prods: products,
pageTitle: "Shop",
path: "/",
hasProducts: products.length > 0,
activeShop: true,
productCSS: true,
});
};
const path = require("path");
const expresss = require("express");
const productsController = require("../controllers/products")
const router = expresss.Router();
// admin/add-product => GET
router.get("/add-product", productsController.getAddProduct);
// admin/add-product => POST
router.post("/add-product", productsController.postAddProduct);
module.exports = router;
404 컨트롤러
exports.get404 = (req, res, next) => {
res.status(404).render("404", { pageTitle: "Page Not Found" });
};
const errorController = require('./controllers/error')
app.use(errorController.get404);
모델 추가
const products = [];
module.exports = class Product {
constructor(t){
this.title = t;
}
save(){
products.push(this);
}
static fetchAll(){
return products;
}
}
728x90
'Backend > Node.js' 카테고리의 다른 글
[Node.js] 동적 콘텐츠 작업 및 템플릿 엔진 추가 (3) | 2024.10.28 |
---|---|
[Node.js] Express.js 작업 (1) | 2024.10.22 |
[Node.js] 개발 워크플로우 및 디버깅 (2) | 2024.10.21 |
[Node.js] 기본 개념 (3) | 2024.10.21 |