vue虚拟dom实现原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue虚拟dom实现原理相关的知识,希望对你有一定的参考价值。

参考技术A 浏览器渲染引擎工作流程都差不多,大致分为5步,创建DOM树——创建StyleRules——创建Render树——布局Layout——绘制Painting
第一步,用html分析器,分析HTML元素,构建一颗DOM树(标记化和树构建)。

第二步,用CSS分析器,分析CSS文件和元素上的inline样式,生成页面的样式表。

第三步,将DOM树和样式表,关联起来,构建一颗Render树(这一过程又称为Attachment)。每个DOM节点都有attach方法,接受样式信息,返回一个render对象(又名renderer)。这些render对象最终会被构建成一颗Render树。

第四步,有了Render树,浏览器开始布局,为每个Render树上的节点确定一个在显示屏上出现的精确坐标。

第五步,Render树和节点显示坐标都有了,就调用每个节点paint方法,把它们绘制出来。
原文章出处
https://blog.csdn.net/m0_46434460/article/details/105056667

1.虚拟DOM的最终目标是将虚拟节点渲染到视图上。但是如果直接使用虚拟节点覆盖旧节点的话,会有很多不必要的DOM操作。例如,一个ul标签下很多个li标签,其中只有一个li有变化,这种情况下如果使用新的ul去替代旧的ul,因为这些不必要的DOM操作而造成了性能上的浪费。

为了避免不必要的DOM操作,虚拟DOM在虚拟节点映射到视图的过程中,将 虚拟节点 与上一次渲染视图所使用的 旧虚拟节点 (oldVnode)做 对比 ,找出真正需要更新的节点来进行DOM操作,从而避免操作其他无需改动的DOM。

其实虚拟DOM在Vue.js主要做了两件事:

提供与真实DOM节点所对应的虚拟节点vnode
将虚拟节点vnode和旧虚拟节点oldVnode进行对比,然后更新视图

其实虚拟DOM就是用 js 完成本来在html上的 元素创建

以上是关于vue虚拟dom实现原理的主要内容,如果未能解决你的问题,请参考以下文章

Part3-1-4 Vue.js Virtual DOM 的实现原理

vue虚拟dom原理

Vue 2.x 的虚拟DOM原理

从零实现Vue虚拟DOM和DOM-DIFF算法

vuex实现原理

Vue数据双向绑定原理及简单实现