1. 什么是 MVVM?
M:(Model, 模型层) 数据模型 数据是后端 Ajax 获取到的
V :(View, 视图层) 需要把数据展示到页面的 html 中
VM:(ViewModel, 视图模型 V 与 M 连接的桥梁) View 和 Model 是通过 ViewModel 来进行关联的
View 改变了 通过 DomListener 注册事件 视图改变了 数据就改变了
数据变化了 视图根据 DataBindings 发生改变 (也就是数据劫持)
MVVM 实现了数据双向绑定 (数据发生改变以后 VM 会监测到数据的改变) 自动的通知我们的页面
进行修改 视图发生改变以后 同样的数据也会发生改变
vue 做得事情就是视图变 数据变 数据变 视图变
2. 几种双向数据绑定的方式?
1. 发布 - 订阅者模式 (Backbone.JS) 最早的 mvvm 框架
一般通过 pub,sub 的方式来实现数据和视图的绑定 使用起来比较麻烦
2. 脏值检查 (angular.JS)
用定时器轮训检测数据是否发生改变 性能低
3.(vue 用什么方式实现的数据绑定?)
数据劫持 Object.defineProperty 给对象的属性增加修饰符来劫持各个属性的 setter getter(获取值和设置值的时候 你都能知道
然后就可以修改页面的视图了) 此外还结合了发布订阅模式 把所有订阅 指定 统一做更新的处理
IE8 以下不支持 Object.defineProperty 这个属性的 所以 vue 只兼容到 ie9
来源: http://www.bubuko.com/infodetail-3259518.html