애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중할 수 있다.
재사용성과 확장성이 용이하다.
하지만 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있다.
뷰와 모델이 긴밀하게 상호작용해서 뷰와 모델의 의존성이 높다.
대표적인 라이브러리로 React가 있다.
대표적인 특징으로 불변성(immutable)이 있다. 예를 들어 state는 setState를 통해서만 수정이 가능하고, props를 기반으로 만들어지는 컴포넌트를 사용한다.
단방향 바인딩이고, 라이브러리이기 때문에 프레임워크보다 자유도가 높다.
가상 DOM을 통해 실제 DOM을 조작하는 것을 추상화해서 성능을 높였다.
MVC 패턴과 유사하나 컨트롤러가 아닌 프레젠터(presenter)로 교체된 패턴이다.
뷰와 프레젠터는 일대일 관계이기 때문에 MVC 패턴보다 더 강한 결합을 지닌 패턴이다.
뷰와 모델 사이의 의존성은 해결되었지만, 뷰와 프레젠터 사이의 의존성은 여전히 높다.
MVC의 컨트롤러 대신 뷰모델(view model)로 바뀐 패턴이다.
양방향 데이터 바인딩
데이터 바인딩 : 화면에 보이는 데이터와 서버 데이터를 일치시키는 기법
뷰와 모델 사이의 의존성이 없고 뷰와 뷰모델 사이에도 의존성이 없다.
각 요소들이 독립성을 유지하기에 모듈화하여 개발하기 쉽고, 유닛 단위로 테스트하기 편하다.