1.为什么用vue
原来是命令式操作DOM,操作太频繁,代码难以维护
通过声明式操作DOM,可以解决上述问题
建立状态和DOM映射关系,将状态渲染成DOM,渲染出页面
2.vue是渐进式框架
渐进式:在已有服务端应用时,可以将vue的一部分嵌入,实现其他功能。
即框架分层:视图层、组件机制、路由机制、状态管理、构建工具
分层后,可选用核心部分或所有层级
3.vue可以将网页分割成可复用的单文件组件
4.vue提供了命令行工具,可以快速初始化
5.vue2.0引入虚拟DOM,可以让渲染速度变快:
a.变化侦测,react通过虚拟DOM比对,angular通过脏检查,vue侦测使用该变化状态的节点进行立即更新
b.vue1.0粒度太细,每个绑定有一个watcher观察状态变化,这样后果:内存开销和依赖追踪开销不断增大
c.vue2.0使用中等粒度,即引入虚拟DOM(初始渲染速度提升),一个组件为一个watcher实例(降低内存消耗),组件内有多个节点对应某几个状态,watcher观察到变化的状态后通知到组件,组件内通过虚拟DOM进行比对和渲染
d.变化侦测有助于随时调整绑定粒度
e.模板表示状态和DOM之间的映射关系,编译模板后转换吃渲染函数,执行函数后得到虚拟节点树(与真实DOM对应),用于渲染页面,虚拟DOM通过对比虚拟节点和旧虚拟节点对比,进行部分视图更新
f.对比虚拟节点算法是patch:增、删、更新
6.Array变化侦测
a.Array.prototype被拦截器覆盖,执行array的原型方法时先通过拦截器后再执行对应方法
b.只拦截有变化的数据,需通过observer类将拦截器覆盖给原型方法
7.变化侦测的api实现原理