데이터베이스, 상수 변수 등의 애플리케이션 데이터를 말한다
inputbox checkbox 등의 사용자인터페이스 요소
변경이 일어나면 컨트롤러에 이를 전달해야한다
하나이상의 모델과 하나 이상의 뷰를 잇는 다리 역할, 이벤트 등 메인 로직을 담당한다, 모델과 뷰의 생명주기도 관리한다
C 클라이언트 Request 분석M 데이터 수집 가공V 뷰 생성C 결과 응답재사용성과 확장성이 용이하다
애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해진다
뷰와 프레젠터는 일대일 관계이기 때문에 mvc보다 더 강한 결합을 지닌다
뷰모델은 뷰를 더 추상화한 계층이며 커맨드 (여러가지 요소에 대한 처리를 하나의 액션으로 처리할수 있게 하는 기법)
와 데이터 바인딩(화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시키는 기법) 을 가지는 것이 특징이다
양방향 데이터 바인딩을 지원하며 UI를 별도의 코드 수정 없이 재사용할 수 있고 단위 테스팅이 쉽다
프론트엔드에서 MVC보다 더 많이 쓰이는 패턴
https://github.com/wnghdcjfe/csnote