MVVM 模式即 Model-View-ViewModel 模式
Model 层
数据层。它仅仅关注数据本身,不关心任何行为
View 层
视图层。view 层可以说是一个动态模板,它定义了页面的结构和布局,展示了 viewModel 层提供的数据
viewModel层
MVVM 模式的核心,用于同步 View 层和 Model 层的一个对象。View 层和 Model 层之间并没有直接的联系,他们之间的交互是通过 ViewModel 来进行的,可以说 viewModel 是 view 层和 Moedl 层之间的桥梁
MVVM 模式的优点:
1,分离了数据层和视图层,降低了代码耦合
2,利用双向绑定,自动更新 DOM
在不同的框架当中,MVVM 实现的原理是不同的:
脏检查机制
Angular 就是采取的脏检查机制,当发生了某种事件(例如输入),Angular 会检查新的数据结构和之前的数据结构是否发生来变动,来决定是否更新视图。
数据劫持
Vue 采用数据劫持 & 发布-订阅模式的方式,通过 ES5 提供的 Object.defineProperty() 方法来劫持(监控)各属性的 getter、setter,并在数据(对象)发生变动时通知订阅者,触发相应的监听回调。并且,由于是在不同的数据上触发同步,可以精确的将变更发送给绑定的视图,而不是对所有的数据都执行一次检测。