笔记
- 渲染器的工作原理就是将vnode转化成dom的过程。
- vnode代表一个js对象,这个对象有dom的完整信息,之所以需要vnode是因为每次状态改变直接操作dom的成本很高,可通过新vnode与旧vnode的对比,得到对dom的最少、最优操作。
vnode的工作流程:
将上一次渲染视图时所创建的vnode缓存起来,
之后每当需要重新渲染视图时,将新创建的vnode和上一次缓存的vnode进行对比,
查看它们之间有哪些不一样的地方,找出这些不一样的地方并基于此去修改真实的DOM。
- 新vnode与旧vnode的对比以及渲染视图的过程称为patch,patch的过程其实就是创建节点、删除节点和修改节点的过程,也是渲染器最核心的功能。
- 一个组件或者一个.vue文件就有一个watcher和vnode,当数据更新时,watcher就会使用patch更新vnode,从而更新到视图。
patch
patch的过程其实就是创建节点、删除节点和修改节点的过程,也是渲染器最核心的功能。
总的工作流程图:
创建节点
当vnode和oldVnode完全不是同一个节点时
删除节点
当一个节点只在oldVnode中存在时,我们需要把它从DOM中删除。
更新节点
总流程图
静态节点
静态节点指的是那些一旦渲染到界面上之后,无论日后状态如何变化,都不会发生任何变化的节点。
更新子节点
更新子节点大概可以分为4种操作:新增节点、更新节点、移动节点、删除节点。