vue.js是什么
vue.js是一套用于构建用户界面的渐进式框架,vue采用自底而上的增量开发设计。
vue的目标是通过尽可能简单的API实现响应的数据绑定和组合视图组件。
他提供了现代开发常用的高级功能:
-
解耦视图和数据
-
可复用的组件
-
前端路由
-
状态管理
-
虚拟dom (Virtual DOM)
MVVM模式
MVVM (Model - View - ViewModel)模式由MVC模式衍生而来,当View发生变化时会自动更新到ViewModel,ViewModel发生变化时会更新View,View与ViewModel通过双向绑定建立联系:
MVVM实现做法
-
发布-订阅者模式(backbone.js) 一般通过sub, pub的方式实现数据和视图的绑定监听,更新数据方式通常做法是 vm.set('property', value)
-
脏值检查(angular.js) angular.js 是通过脏值检测的方式比对数据是否有变更,来决定是否更新视图,最简单的方式就是通过 setInterval() 定时轮询检测数据变动,angular只有在指定的事件触发时进入脏值检测
- DOM事件
- XHR响应事件
- 浏览器Location变更事件
- Timer事件(timeout , interval )
- 执行 digest()或 apply()
-
数据劫持: vue.js 采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。