MVVM编程模式
MVVM本质上是MVC的升级版,所以先介绍一下MVC,在讲MVC之前可以了解一下前端的发展史。
MVC介绍
MVC,即 Model-View-Controller(模型-视图-控制器),是一种将逻辑、界面、数据分离开来的一种设计模式。
MVC 中:
M 为 model 模型,表示业务逻辑;
V 即 view,为用户看到并可以与之交互的视图界面;
C 监听模型数据的改变、控制视图行为、处理用户交互,存在的意义是确保当 M 发生改变时,V 内容可以同步更新。
可以参考ios开发文档中的一张图:
使用MVC目的
令 M 和 V 分离开来,使同一个程序可以使用不同的表现形式。
MVC 实现思路
用户操作 view,controller 层完成业务处理,更新 model 层,将数据展示在 view 层。
MVVM是什么
MVVM,即 Model-View-ViewModel,由于 Controller 主要用来处理各种逻辑和数据转化,如果页面逻辑比较复杂 Controller 就会相对庞大,维护困难,所以有人想到把 Controller 的数据和逻辑处理部分从中抽离出来,用一个专门的对象去管理,这个对象就是 ViewModel,是 Model 和 Controller 之间的一座桥梁。当人们去尝试这种方式时,发现 Controller 中的代码变得非常少,变得易于测试和维护,只需要Controller 和 ViewModel做数据绑定即可。
为什么要使用MVVM
在过去的10年中,我们已经把很多传统的服务端代码放到了浏览器中,这样就产生了成千上万行的javascript代码,它们连接了各式各样的HTML 和CSS文件,但缺乏正规的组织形式,所以越来越多的开发者使用javascript框架。
MVC和MVVM的区别
MVC中是单向通信,view和model必须通过controller承上启下,而ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,MVVM实现的是业务逻辑组件的重用,使开发更高效,结构更清晰,增加代码的复用性。