MVC(Model, View, Controller)패턴이란 소프트웨어 설계와 관련된 디자인 패턴으로, 소프트웨어가 작동하는 방식에 대한 패턴을 의미한다. 이러한 패턴은 소프트웨어가 작동하는 데 필요한 여러 기능들을 Model, View, Controller 등의 역할로 나눔으로써 좀 더 정돈된 코드를 작성할 수 있도록 해준다(코드 가독성이 높고 관리에 용이함).
이미지 출처:codestates urclass
Model은 그 자신이 데이터 정보를 갖고 있거나 데이터베이스로부터 정보를 가져오는 역할을 한다. 이 정보를 바탕으로 Model은 Controller에게 데이터를 반환하며, Controller가 Model에게 정보를 물어볼 수도 있다. Model과 View가 직접적으로 상호작용 할 수는 없다.
View는 사용자가 보는 화면을 보여주는 역할을 한다. Model이나 데이터베이스에 직접 접근하지 않고 Controller와 상호작용한다. View가 View에서 일어나는 사용자의 액션이나 이벤트를 Controller에게 전달하면 Controller => Model => DB => Model => Controller 흐름대로 작동하여 최종적으로는 Controller가 View에게 필요한 데이터를 전달하게 되고 View는 이 데이터를 바탕으로 화면을 그리게 된다.
Controller는 View에서의 액션과 이벤트에 대한 input값을 받는다. 이 input값을 가공하여 Model에 전달하면 Model은 자신 혹은 데이터베이스에서 정보를 가져와서 Controller에게 이를 반환한다. 이 때 Controller는 Model로부터 받은 정보를 가공하여 View에 전달한다.
이미지 출처:codestates urclass
- 브라우저에서 사용자의 액션이나 이벤트가 발생하면 Router에게 특정 endpoint들을 라우팅(분기)한다.
- Router는 라우팅 endpoint에 맞는 Controller 함수를 호출한다.
- Controller는 이를 바로 View로 반환하거나 Model(혹은 Model=>DB)을 거쳐서 View로 반환한다.(Model을 거칠 경우 Controller에서 Model을 호출하여 DB에서 정보를 가져오거나 정보를 입력함)