TIL
2020-12-07 TIL : MVC
chejg
2020. 12. 7. 19:36
MVC란?
- Model View Controller의 약자.
- 소프트웨어 아키텍쳐 디자인 패턴
- 특정 라이브러리를 지칭하는 것이 아님.
- 어떤 서비스가 돌아가는 아이디어의 패턴
- 서비스가 돌아가기 위한 기능들을 나눈다는 특징이 있다. 의도된 코드를 특정 역할에 사용한다.
- 루비 온 레일즈, 익스프레스, 라라벨, 장고 등 유명 웹 프레임워크들이 사용하고 있다.
각 요소에 대한 설명
- Model
- 각 데이터에 대한 정보를 갖고 있다.
- 자신이 데이터를 갖고 있을 수 있다.
- 데이터베이스에 연결해서 데이터를 가지고 올 수 있다.
- 뷰와는 직접 소통하지 않으며, 컨트롤러와 소통한다.
- View
- 유저가 보는 화면을 보여주는 역할을 한다.
- 컨트롤러와만 소통하고, 직접 데이터베이스와 연결되지 않는다.
- 유저의 액션이나 이벤트 등을 전달한다.
- 데이터를 받아서 유저가 볼 수 있도록 화면을 그려준다.
- Controller
- 뷰에서 일어나는 액션, 이벤트에 대한 인풋값을 받는다.
- 해당 값을 모델에 던져주기 전에 특정 프로세스를 실행할 수 있다.
- 가공한 데이터를 모델에 전달해 준다.
- 모델로부터 받은 데이터를 뷰가 알아들을 수 있도록 다시 가공한다.
- 뷰가 그릴 수 있게 가공한 데이터를 전달한다.
웹 예제(세 가지 요소의 작동)
- 브라우저에서 유저에 의해 특정 요청에 의해 라우팅(분기)이 일어난다.
- 각 라우터는 라우팅 엔드 포인트에 맞는 컨트롤러의 함수를 호출한다.
- 컨트롤러는 바로 뷰로 전달할 수도 있고, 모델과 소통하며 데이터베이스와 소통한 다음 뷰로 보내줄 수도 있다.