什么是MVVM开发模式
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。
- Model:代表数据模型
- View:代表视图
- ViewModel:核心通过(v层数据)双向数据绑定实现M层,和v层交互的代理。(原理:1、对数据绑定,当m层数据变化时,自动更新到v层。2、对dom事件监听。将视图中的数据变化自动更新到M层)
- Model和View并无直接关联,是通过ViewModel进行联系的。Model和ViewModel之间有双向数据绑定的联系,当Model数据改变时会触发View层刷新,View中由于用户交互改变的数据也会在Model中同步
优点
- 双向数据绑定,只需管局Model变化,让MVVM框架自动更新DOM状态
- 将控制器的功能移动到View上处理
- 视图和逻辑解藕,视图独立于数据
- 可以复用
缺点
- bug难以调试,双向数据绑定使定位错误变得复杂
- 在vue中通过v-model实现双向数据绑定,数据同步从视图->模型通过事件监听实现,数据从模型->视图通过数据绑定(数据填充)
和MVC的区别
1、mvc的Controller:视图请求操作数据,将请求发送至控制器,控制器再将请求发送给模型,模型查找数据,找到后传给控制器,控制器再传递给视图进行渲染。
而mvvm中的vm层是双向数据绑定,当视图请求操作数据,mv对m层和v层两端都有监听操作,通过数据劫持和发布订阅者实现双向数据绑定
2、视图和逻辑解藕,易于开发维护
3、增加了逻辑的可重用性