虚拟DOM、Diff、Key

62 阅读1分钟

真实DOM与虚拟DOM

虚拟DOM为react与vue两个框架都带来了跨平台的能力。 虚拟DOM实际是一层对真实DOM的抽象。以JS对象(vnode节点)作为基础的树,用对象的属性描述节点,最终通过一系列操作使这棵树映射到真实环境上,也就是真实DOM。 创建虚拟DOM就是为了更好的将虚拟节点渲染到页面视图中。 虚拟DOM对象的节点与真实DOM的属性一一照应。

真实DOM节点:vnode,虚拟DOM节点:Vnodes。
虚拟DOM是在内存中的,真实DOM是用户可以操作的DOM。
而 虚拟DOM的对比算法(diff算法)就是依赖key完成的

虚拟DOM中key的作用

key是虚拟DOM对象的标识,标志每个DOM元素的唯一性,当状态中的数据发生变化的时候,vue会根据新数据生成新的虚拟DOM。然后通过【diff算法】进行新虚拟DOM与旧虚拟DOM的比较。

Diff算法原理

旧虚拟DOM中找到了与新虚拟DOM相同的key:

如果虚拟DOM中的内容没变,直接使用之前的真实DOM.
如果虚拟DOM中的内容改变,则生成新的真实DOM,并替换页面中之前的旧真实DOM。

旧虚拟DOM中未找到与新虚拟DOM相同的key:

创建新的真实DOM,然后渲染到页面中。

diff算法就是通过比较虚拟dom中vnode的key与内容,得出一些需要修改的最小单位,再更新视图。减小了dom的操作,提高了性能

原文链接:blog.csdn.net/heartqian/a…