MVC和MVVM都是架构模式。
一、MVC ( backbone.js )[了解]
- M: Model数据模型
- V: View 视图
- C: controller控制器
数据模型发生改变,交给控制器处理,控制器通知视图渲染
二、MVVM
- M: Model数据模型
- V: View视图
- VM: ViewModel 视图模型
Vue是基于MVVM实现的,主要是基于MVVM实现了双向数据绑定。
- 数据 ====> 视图: 使用Object.defineProperty递归挟持Vue实例对象data中的所有数据,对所有数据的访问就getter和setter代理了,当我们改变数据,就会触发setter函数,Vue的底层就会通知视图更新渲染。
- 视图 ====> 数据: Vue对表单的输入进行了dom监听,把监听到的数据,同步到Model数据模型中(data中)
数据的响应式原理
数据 ====> 视图: 响应式就是我们只要修改数据,自动更新渲染视图,原理是: 使用Object.defineProperty递归挟持Vue实例对象data中的所有数据,对所有数据的访问就getter和setter代理了,当我们改变数据,就会触发setter函数,Vue的底层就会通知视图更新渲染
观察者模式:设计模式 【了解】
初始化代码的时候,Vue的底层有一个observe把所有数据都挟持了, 有一个订阅者Dep和一个观察者Watcher,Dep实现把访问过的属性收集起来了,当数据改变,触发setter,Dep通知观察者,说数据变化了,观察者调用更新方法,进行数据的更新,通知视图进行渲染。