MVVM的理解
M(模型,数据)VV(视图)M 数据驱动视图变化,我们不用在手动操作dom进行更新了。
响应式数据的原理
- 核心就是object.defineProperty
- 默认vue在初始化的时候,会给data中的属性,使用object.defineProperty。重新定义当前的属性。当页面取到对应的属性时,会进行依赖收集(收集当前组建的watcher) 如果属性发生变化,会通知相关依赖进行更新操作
- this.walk 定义响应式。 dep.depend() 收集依赖,set dep.notify // 触发更新
vue中如何检测数组的变化
- 更改了数组的原型,
- 对数组新增的每一项进行监控,如果是新增的对象,则继续监控(Observer)
为何vue采用异步渲染
- 为了防止一改数据,就更新视图。处于性能的考虑。核心是$next()
- 保证当前视图渲染完成,
vue中Computed的特点
- 方法用到模板,只要方法
- 计算属性时具备缓存的
- watch
watcher
vue为什么需要虚拟dom
- virtual DOM 就是用js对象来描述真是的DOM,是真是dom的抽象
- 由于直接操作DOM的性能低,但是js层的效率高,可以将dom转化为对象操作,最终通过diff算法比对差异进行更新dom(减少对真实dom的操作)
- 虚拟dom不依赖真实平台环境,从而可是实现跨平台