1.什么是MVVM?html
M:(Model,模型层) 数据模型 数据是后端ajax获取到的vue
V :(View,视图层)须要把数据展现到页面的html中 ajax
VM:(ViewModel,视图模型 V与M链接的桥梁) View和Model是经过ViewModel来进行关联的后端
View改变了 经过DomListener 注册事件 视图改变了 数据就改变了框架
数据变化了 视图根据DataBindings发生改变(也就是数据劫持)mvvm
MVVM实现了数据双向绑定 (数据发生改变之后 VM会监测到数据的改变) 自动的通知咱们的页面性能
进行修改 视图发生改变之后 一样的数据也会发生改变spa
Vue作得事情就是视图变 数据变 数据变 视图变双向绑定
2.几种双向数据绑定的方式?htm
1.发布-订阅者模式(backbone.js) 最先的mvvm框架
通常经过pub、sub的方式来实现数据和视图的绑定 使用起来比较麻烦
2.脏值检查(angular.js)
用定时器轮训检测数据是否发生改变 性能低
3.(vue用什么方式实现的数据绑定?)
数据劫持 Object.defineProperty给对象的属性增长修饰符来劫持各个属性的setter getter(获取值和设置值的时候 你都能知道
而后就能够修改页面的视图了) 此外还结合了发布订阅模式 把全部订阅 指定 统一作更新的处理
IE8如下不支持 Object.defineProperty这个属性的 因此vue只兼容到ie9