vue/vue2.0/渲染器原理

119 阅读2分钟

笔记

  • 渲染器的工作原理就是将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的过程其实就是创建节点、删除节点和修改节点的过程,也是渲染器最核心的功能。

总的工作流程图: image.png

创建节点

当vnode和oldVnode完全不是同一个节点时 image.png

删除节点

当一个节点只在oldVnode中存在时,我们需要把它从DOM中删除。

更新节点

总流程图 image.png

静态节点

静态节点指的是那些一旦渲染到界面上之后,无论日后状态如何变化,都不会发生任何变化的节点。

更新子节点

更新子节点大概可以分为4种操作:新增节点更新节点移动节点删除节点

image.png

参考资料

微信读书:深入浅出vue.js