简述前端MVVM、MVC、MVP之间的区别和联系

 

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等。

相关文章
相关标签/搜索