首页 > 其他分享 >虚拟DOM

虚拟DOM

时间:2023-02-13 11:11:52浏览次数:26  
标签:10 DOM 节点 虚拟 操作 重绘

虚拟DOM就是用JS来模拟DOM结构。

  当用传统的api或jQuery去操作DOM时,浏览器会从构建DOM树开始从头到尾执行一遍流程。比如当你在一次操作时,需要更新10个DOM节点,理想状态是一次性构建完成DOM树,再执行后续操作。但是浏览器没有那么智能,在收到第一个更新DOM请求后,并不知道后续还有9次更新操作,因此会马上执行流程,最终执行10次流程,显然前面几次都是白白浪费性能。而且操作DOM的代价是很昂贵的,频繁操作可能会出现页面卡顿,影响用户的体验。

  虚拟DOM就是为了解决这个浏览器性能问题而被设计出来的,如果一次操作中有10次更新DOM的操作,虚拟DOM不会立即操作DOM,而是将这10次更新的diff内容保存在本地的一个js对象中,最终将这个js对象一次性attach到DOM树上,通知浏览器去执行绘制工作,这样可以避免大量的无谓的计算量。

 

在实际代码中,会对新旧两棵树进行一个深度的遍历,每个节点都会有一个标记。每遍历到一个节点,就把该节点和新的树进行对比,如果有差异就记录到一个对象中。然后映射到真是DOM。

 

 

1、虚拟DOM不会进行重排与重绘操作;

2、虚拟DOM进行频繁修改,然后一次性比较并修改真实DOM中需要修改的部分,最后进行重排和重绘,减少过多DOM节点重排和重绘损耗。

3、虚拟DOM有效降低大面积(真实DOM节点)的重排和重绘,因为最终与真实DOM比较差异,可以局部渲染。

标签:10,DOM,节点,虚拟,操作,重绘
From: https://www.cnblogs.com/zhaofen/p/17115646.html

相关文章

  • 7.6提供相同运行环境的Java虚拟机
       除虚拟机的方法之外,还有一种方法能够提供不依赖于特定硬件及操作系统的程序运行环境,那就是Java。   大家说的Java,有两个层面的意思。一个是作为编程语言Ja......
  • 7.5利用虚拟机获得其他操作系统环境
       即使不通过移植,也可以使用别的办法来进行其他操作系统的应用。通过利用虚拟机,我们就可以在Macintosh的Mac操作系统上运行Windows应用了。   VirtualPCfo......
  • react实战笔记45:Dom对象
     原生获取dom对象 usRef获取dom对象......
  • react实战笔记45:Dom对象和ref对象
     尽量不要使用useRef对象  写一个子组件父子组件 子组件传值类组件得数据格式   ......
  • 调度器43—root_domain—更新路径
    1. root_domain的路径的赋值路径kernel_init_freeable//内核初始化路径调用【2】......
  • 7.6 提供相同运行环境的Java虚拟机
    一、不通过移植,也能利用虚拟机软件来运行其他操作系统的应用。通过利用该虚拟机,我们就可以在Macintosh的Mac操作系统上运行Windows应用了。VirtualPCforMAC可以使Maci......
  • 使用JS的DOM(文档对象模型)获取前端循环的参数
    使用JS的DOM(文档对象模型)获取前端循环的参数使用Go语言渲染html,但是想让网页动起来,显示一些弹窗还是比较麻烦的,于是乎,想到使用js获取页面的数据进行显示,但是js无法加载go......
  • 关于虚拟机克隆之后网卡无法开启解决办法
     之前经常出现这样的问题,但由于实在找不到解决的办法,只能重新去安装一个新的操作系统,而且克隆之后两台虚拟机的网络均打开不了,非常恼火,快照也没有一点用处,网络就是打不开......
  • 虚拟机系统安装过程
    1.虚拟机启动后会出现下面的界面(白色表示选中)默认选中的是Testthismedia&installCentOS 7。    InstallCentOS7                    ......
  • Server-U 设置虚拟路径
    1.物理路径:要映射到的目标目录2.映射物理路径到: %HOME%   %HOME%代表ftp根目录3.虚拟名称:访问时在ftp目录下显示的名称4.设置对物理路径的访问权限做完以......