什么是MVVM
MVVM是基于MVC和MVP模式,它的目的是更清晰把视图(UI)与应用程序中的业务逻辑,行为区分开。 直白一点就是,这个模式让Model,View,ViewModel不纠缠在一起,让它们分工明确。
Model 数据层,它仅仅关注数据本身,不关心任何行为
VIEW 视图层,对应的就是用户操作界面
ViewModel 业务逻辑层.利用双向绑定技术,使得 Model 变化时,ViewModel 会自动更新,而 ViewModel 变化时,View 也会自动变化。
不同的框架中实现双向绑定绑定方式有所不同
- 数据劫持(vue)
- 脏值检查(react,angular)
VUE实现MVVM
VUE采用数据劫持&发布订阅模式的方式,通过ES5提供的 Object.defineProperty() 方法来劫持(监控)各属性的 getter 、setter ,并在数据发生变动时通知订阅者,触发相应的监听回调。
VUE实现双向数据绑定,大致可以划分三个模块:数据劫持Observer、模板编译Compile、观察者Watcher