《虚拟 DOM 和 DOM diff》

一、虚拟 DOM 是什么

一个能代表DOM树的对象,通常含有标签名、标签上的属性、事件监听、子元素,以及其他属性

二、虚拟 DOM 的优点

1. 减少DOM操作:
(1)虚拟DOM将多次操作合并为一个。减少次数
(2)借助DOM diff把操作次数节省。减小范围
2. 跨平台:
可以把虚拟DOM做成app者view,因为虚拟DOM的本质是一个JS对象

三、虚拟 DOM 的缺点

需要额外的创建函数,如createElement或h,且严重依赖打包工具。
但我们可以通过JXS来简化成XML写法。

四、DOM diff 是什么

DOM diff是虚拟DOM的对比算法

我们可以把虚拟DOM想象成树形:

<div:class="x">
    <spanv-if="y">{string1}</span>
    <span>{string2}</span>
</div>

举例一:

当数据变化,x从red变为green

此时DOM diff发现:
div标签类型没变,只需要更新div对应的DOM的属性。
而子元素没变,不更新子元素。

举例二:
当数据变化,y从true变为false

DOM diff发现:
div没变,不更新。
子元素1标签没变,但是children变了,更新DOM内容。
子元素2不见了,删除对应的DOM。

五、DOM diff 的优点

DOM diff算法通过将新的DOM树和旧的DOM树进行比较,只对变化的部分进行渲染,大大提高了渲染效率。

六、DOM diff 的问题

同级节点对比存在Bug,会出现识别错误的问题。
解决方法:使用Key值进行命名区分。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.什么是虚拟DOM? 是一个能代表DOM 树的对象,通常含有标签名、标签上的属性、事件监听和子元素们,以及其他属...
    雨溪滩阅读 420评论 0 1
  • 概念 虚拟DOM 是什么:其实就是个js对象虚拟 dom 是相对于浏览器所渲染出来的真实 dom 的,在react...
    张德瘦嬢嬢阅读 288评论 0 0
  • visual Dom是什么🧐 虚拟DOM其实就是,像拥有类似dom的一系列属性的对象,包括:标签名,标签上的属性,...
    Adder阅读 155评论 0 2
  • 虚拟DOM是什么? 一个能代表DOM树的对象,通常含有标签名、标签上的属性、事件监听和子元素们,以及其他属性。 虚...
    Marshall3572阅读 223评论 0 1
  • DOM总结 虚拟DOM是什么 一个能代表DOM树的对象,通常含有标签名、标签上的属性、事件监听和子元素们,以及其它...
    卢卢2020阅读 264评论 0 0