MVVM中的View 和 ViewModel能夠互相通訊。也就是能夠互相調用。
MVC中的是單向通訊。也就是View跟Model,必須經過Controller來承上啓下html
(MVVM,數據驅動視圖,核心是VM ,經常使用的有 vue,react
MVC的話就是傳統的 Model - view - controller 三部分組成)vue
1、MVC(Model-View-Controller)react
MVC是比較直觀的架構模式,用戶操做->View(負責接收用戶的輸入操做)->Controller(業務邏輯處理)->Model(數據持久化)->View(將結果反饋給View)。程序員
MVC使用很是普遍,好比JavaEE中的SSH框架(Struts/Spring/Hibernate),Struts(View, STL)-Spring(Controller, Ioc、Spring MVC)-Hibernate(Model, ORM)以及ASP.NET中的ASP.NET MVC框架,xxx.cshtml-xxxcontroller-xxxmodel。(實際上後端開發過程當中是v-c-m-c-v,v和m並無關係,下圖僅表明經典的mvc模型)web
2、MVP(Model-View-Presenter)數據庫
MVP是把MVC中的Controller換成了Presenter(呈現),目的就是爲了徹底切斷View跟Model之間的聯繫,由Presenter充當橋樑,作到View-Model之間通訊的徹底隔離。後端
.NET程序員熟知的ASP.NET webform、winform基於事件驅動的開發技術就是使用的MVP模式。控件組成的頁面充當View,實體數據庫操做充當Model,而View和Model之間的控件數據綁定操做則屬於Presenter。控件事件的處理能夠經過自定義的IView接口實現,而View和IView都將對Presenter負責。架構
3、MVVM(Model-View-ViewModel)mvc
若是說MVP是對MVC的進一步改進,那麼MVVM則是思想的徹底變革。它是將「數據模型數據雙向綁定」的思想做爲核心,所以在View和Model之間沒有聯繫,經過ViewModel進行交互,並且Model和ViewModel之間的交互是雙向的,所以視圖的數據的變化會同時修改數據源,而數據源數據的變化也會當即反應到View上。框架
這方面典型的應用有.NET的WPF,js框架Knockout、AngularJS等。