1、好处
团队协作
可以用来统一开发人员的开发标准,在规模较大的程序当中,如果不采用统一的开发思维,很有可能在团队人员变化之后,新人搞不懂逻辑放在哪个类中。
软件架构层面
项目会变得稳定,模块之间的耦合度会降低。
例如:采用MVVM,在界面当中(也就是在‘V’当中),不会包含与业务逻辑相关的代码。
2、作用
M:Model,指的就是数据,Javascript对象。
V:View,指的是试图部分,在前端中就是DOM。
VM:ViewModel,VM是一个Observer观察者。当数据发生变化,,VM会监测到这种变化进行视图的更新;当用户对视图进行操作时,VM也可以进行数据的更新。
3、MVVM: MVC增强版
MVVM是MVC的增强版,首先需要了解MVC模型。MVC的全称即Model-View-Controller:Model 呈现数据,View 呈现用户界面,而 View Controller 调节它两者之间的交互。
在MVC框架中,View是可以直接访问Model的,这样不可避免的使View里面也需要包括一些业务逻辑,同时还需要Model保持不变,而Model又对应着多个不同的显示(View),所以总体说来就是,在MVC模型里面,Model不依赖View,但是View是依赖于Model的。这样就导致更改View比较困难。前后端没有解耦,Model与View没有彻底解耦。
在MVVM框架中,View用于发送用户的交互请求,之后将用户请求转交给ViewModel,ViewModel即可根据用户请求操作Model数据更新,待Model数据更新完毕,便会通知ViewModel数据发生了变化,然后ViewModel就会即刻更新View数据,完成视图的更新,从而完成用户的请求。
个人感觉MVVM和MVC的整体架构是有相似的地方的,不同的是MVVM主要用于构建基于事件驱动的 UI 平台(界面),适用于前端开发领域中数据与界面相混合的情况,所以它只专注于视图层,抽象出视图的状态和行为,实现了用户界面的UI(View)和数据(Model)的解耦。这个View和Model虽然和MVC中描述的一样,但是不相同的,可以理解为MVC中View中包含了MVVM的架构方式。而MVVM是在MVC发展到MVP之后,在提出前后端分离的基础上,对View层进行了细分,提出ViewModel对视图层进行View和Model的解耦。