首先,MVVM 和 MVC 都是一种设计模式
MVC
M(Model): 模型层。 用于处理应用程序数据逻辑的部分,模型对象负责在数据库中存取数据
V (View): 视图层。 处理数据显示的部分 ,视图 是 依据 模型数据 创建的
C (Controller): 控制层。 处理用户交互的部分,控制器接收用户的输入并调用模型和视图去完成用户需求。 控制器本身不输出任何东西和做任何处理,只是接受请求并决定调用哪个模型构建去处理请求,再确定用哪个视图来显示返回的数据
MVVM
M(Model):模型层
V(View): 视图层
VM(ViewModel):视图模型层。 连接view和model的桥梁。 因为Model层中的数据往往是不能直接跟View中的控件一一对应的,所以需要再定义一个数据对象专门对应view上的控件。ViewModel的职责就是把model对象封装成可以显示和接收输入的界面数据对象。
MVVM将数据双向绑定作为核心思想。也就是 View和Model之间没有联系,都要通过ViewModel这个桥梁来进行交互。
用户操作View,ViewModel能感知到变化,通知Model也发生相应改变;反之Model发生改变,ViewModel也能感知到变化,使View做出相应更新
MVVM可以解决MVC中大量DOM操作而使页面渲染性能降低,加载速度变慢的问题。 而与MVC最大的区别就是,它实现了View和Model的自动同步,当Model属性改变时,不用手动操作DOM元素,View会自动更新显示。