Diff算法
回流
虚拟DOM
- 渲染过程
三大核心系统
- 事实上Vue的源码包含三大核心:
- Compiler模块:编译模板系统;
- Runtime模块:也可以称之为Renderer模块,真正渲染的模块;
- Reactivity模块:响应式系统;
runtime -> renderer(渲染器)
Mini-Vue
渲染系统实现
- 渲染系统,该模块主要包含三个功能:
- 功能一:h函数,用于返回一个VNode对象;
- 功能二:mount函数,用于将VNode挂载到DOM上;
- 功能三:patch函数,用于对两个VNode进行对比,决定如何处理新的VNode;
renderer 渲染器的实现
响应式系统
MiniVue
Vue3选择Proxy的原因
-
Object.defineProperty是劫持对象的属性时,如果新增元素
- Vue2需要再次调用defineProperty
- Proxy劫持的是整个对象,不需要做特殊处理
-
修改对象的不同
- 使用defineProperty时,修改原来的obj对象就可以触发拦截
- 使用proxy,就必须修改代理对象,即Proxy的实例才可以触发拦截
-
Proxy能观察的类型比defineProperty更丰富
- has:in操作符的捕捉器
- deleteProperty:delete操作符的捕捉器
- 等其他操作
-
Proxy作为新标准将受到浏览器厂商重点持续的性能优化
-
缺点:Proxy不兼容IE,也有polyfill,defineProperty能支持到IE9
学习笔记,版权归codeWhy所有