MVVM,是Model-View-ViewModel的缩写,即模型-视图-视图模型. 本质上是MVC(模型-视图-控制器)的改进版,它最重要的特性就是数据绑定,很多js框架都是基于MVVM框架.Vuejs就是其中之一.
ViewModel在其中处于承上启下的作用
这种模式,我们称之为数据的双向绑定
所以呢,我们可以得出结论,View和Model之间是不可以直接通信的,他们之间是通过ViewModel通信,然后ViewModel要实现一个观察者模式(ObServer),当数据发生变化,ViewModel能够监听到这种变化,再通知对应的视图,做自动更新.
MVC 是Model-View-Controller的缩写,即模型-视图-控制器 Model和View的意思与MVVM中的意思一样,不同的是Controller,也就是控制器.
MVC模式实现了M和V的代码分离,M专注于数据,V专注于视图.MVC是单向通信的,也就是VIew和Model必须通过Controller来承上启下.
MVC和MVVM的区别并不是VM完全取代了C,ViewModel只是抽离了Controller中展示业务逻辑.而不是替代了Controller,其它视图操作业务还是应该放在Controller中实现.也就是说MVVM实现的是业务逻辑组件的重用
其实mvc和mvvm的区别并不大.都是一种设计思想.主要就是mvc中的Controller演变成了mvvm中的ViewModel.
要就是mvc中的Controller演变成了mvvm中的ViewModel.
mvvm主要解决了mvc中大量的dom操作,使页面渲染性能降低,加载速度变慢,影响用户体验