主要的区别
他们的主要区别是MVC的control演变成了MVVM的ViewModel。MVVM主要解决了MVC中大量DOM操作带来的问题,MVVM中model频繁变化,开发者需要主动更新到view中。
MVC
MVC属于一种比较直观的架构模式(Model-View-Control)
用户操作->view(负责接收用户的输入操作)->control(业务逻辑处理)->model(数据持久化)->view(将结果返回给view)
MVC的思想
Controller负责将Model的数据用view显示出来,换句话说,就是在Controller里面b把Model的数据赋值给View。
MVC的特点
实现关注点分离,即应用程序中的数据模型与业务和展示逻辑解耦。也就是将模型和视图之间实现代码分离。
MVVM
MVVM是将『数据模型数据双向绑定』的思想作为核心,因此在View和Model中是没有直接联系的,通过ViewModel进行交互,而Model和ViewModel之间也是双向的,因此数据的变化同事会修改数据源,而数据源的数据变化也会立即反应到view上。
MVVM的特点
它有两个方向:
- 将模型转化成视图,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。
- 将视图转化成模型,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。 这两个方向都实现的就是数据的双向绑定。
通信机制:
在MVVM的框架下,视图和模型是不能直接通信的,他们是通过viewModel进行通信的,ViewModel通常会实现一个observer观察者,当数据发生变化的时候,viewModel能够监听到数据的这种变化。