MVC란 무엇인가?

mgm-dev·2일 전
0

📚TL;DR

MVC : Model, View, Controller의 약자. 소프트웨어 디자인 패턴의 하나로, 애플리케이션의 기능을 구분함으로, 정돈된 개발을 가능하게 한다.

!이 포스팅은 웹 사이트/애플리케이션을 기준으로 작성되었습니다


그래서 각각 무엇을 담당합니까?

Model

  • 데이터 관련 로직 담당
  • DB와 소통(SELECT, INSERT, UPDATE, DELETE)
  • Controller와 상호작용 함
  • View를 직접 업데이트 할 수도 있고 아닐 수도 있음(Framework에 따라 다름)

View

  • 사용자가 보는 화면 담당(UI)
  • 일반적으로 HTML/CSS로 구성
  • Controller와 상호작용
  • Controller로 부터 동적 데이터를 전달 받음
  • Template Engines(pug, ejs, jinja)

Controller

  • View 또는 Url로 부터 입력값을 받음
  • Request를 처리함(GET, POST, PUT, DELTE)
  • Model로 부터 데이터를 받음
  • 데이터를 View로 전달함

Psudo Code

// http://www.myblog.com/articles/1

// router
// router는 url을 읽고 어떤 controller을 호출 할지 결정
  routes(articles/:id) = ArticleController.getArticle(id)
    
// controller
// controller는 model을 통해 데이터를 조회하고, 조회한 데이터를 view에 전달함
class ArticleController {
  function getArticle(id) {
    article = ArticleModel.getData(id)
    renderView('article.template', article)
  }
}

// model
// model은 db와 소통하여 필요한 데이터를 조회함
class ArticleModel {
  function getData(id) {
    data = db.query(`SELECT * FROM articles WHERE id = ${id}`)
    return data
  }
}
<!-- view (article.template) -->
<!-- view는 controller에게 받은 데이터를 통해 화면을 렌더함 -->
<h1>{{article.title}}</h1>
<ul>
  <li>{{article.author}}</li>
  <li>{{article.date}}</li>
</ul>
<p>
  {{article.content}}
</p>
profile
never stop learning

0개의 댓글