MVVM和MVC经常都会被提及,但是MVVM和MVC的区别有哪些呢,很多并不清楚,下面详解3大MVVM和MVC的区别。
MVVM简介
MVVM是Model-View-ViewModel的简写,它本质上就是MVC 的改进版。
MVVM架构,如下图所示:
MVVM把应用程序分成三个部分:
1.Model模型(简称M)
Model是应用的核心数据,主要作用为数据的接受作用。
2.View模型(简称V)
View就是UI层,用于用户到交道的。
3.ViewModel(简称VM)
VM: viewmodel 视图模型,是整个mvvm的核心,起着一个桥梁的作用,主要连接M与V。
MVC简介
MVC是把软件系统分为三个基本的部分,分别为:模型Model、视图View、和控制器Controller。
MVC框架模型,如下图所示:
1.Model模型(简称M)
表示业务规则,主要作用为数据的接受和发送设定规则。
2、View视图(简称V)
是指用户看到并与之交互的界面,视图层,就是UI界面,用于跟用户进行交互,一般所有的JSP、Velocity、FreeMarker 、Thymeleaf等页面就是View层。
3、Controller控制器(简称C)
控制层Controller层的功能就是将Model和View层进行关联,控制器本身不输出任何东西和做任何处理,它只是接收请求并决定调用哪个模型构件去处理请求。
MVVM和MVC的区别
1.自动同步的区别
MVVM与MVC最大的区别就是,MVVM实现了View和Model的自动同步,当Model的属性改变时,我们不用再自己手动操作Dom元素来改变View的显示,它会自动变化。
2.单向双向的区别
MVC包括View视图层、Controller控制层、Model数据层,各部分之间的通信都是单向的,而MVVM各部分的通信是双向的。
MVVM引入双向绑定机制,帮助实现一些更新视图层和模型层的工作,让开发者可以更专注于业务逻辑,相比于之前的模式,可以使用更少的代码量完成更复杂的交互。
3.数据分离的区别
在MVC里View是可以直接访问Model的,所以View里会包含Model信息以及一些业务逻辑。
MVVM在概念上是真正将页面与数据逻辑分离的模式,它把数据绑定工作放到一个JS里去实现,而这个JS文件的主要功能是完成数据的绑定。