JavaScript DOM的性能优化详解

Vue.js 性能优化:虚拟 DOM 与虚拟滚动 在现代前端开发中,性能优化是一个永恒的话题。Vue.js 作为一款流行的前端框架,提供了许多强大的工具和技术来提升应用的性能。其中,虚拟 DOM 和 虚拟滚动 是两个非常重要的概念。本文将深入探讨它们的原理、优势以及如何在 Vue.js 中使用它们来优化性能。 阅读详情

本身JS操作DOM就比较消耗性能,你可以理解为JS和dom是独立的小岛,用桥实现两者的联系,但桥很窄,要过路费,所以我们要尽最大可能减少过桥的次数。

再加上每次操作DOM都会触发布局的改变、DOM树的修改和渲染。也就是说操作DOM会引发重排(回流)与重绘,这个过程也是非常消耗资源的。所以要尽量避免重复操作DOM元素。

DOM性能优化的本质:

就是减少对DOM查询及减少DOM操作(增、删、改)引起的重排(回流)和重绘的次数

DOM性能优化方法:

  1. 合并多次对css样式的修改,改为一次处理
  2. 对DOM查询做缓存
  3. 将频繁DOM操作改为一次性操作
  4. 操作DOM前,先把DOM节点删除或隐藏
  5. 采用事件代理处理事件

在讲解5种优化方法之前,我们需要先了解什么是重排(回流)和重绘,要了解重排(回流)和重绘,就需要先了浏览器的渲染机制,所以我们先从浏览器的渲染机制开始讲起。

一、浏览器的渲染机制

浏览器的整个渲染过程(下图)

  • 解析 HTML,构建 DOM 树
  • 解析 CSS,生成 CSS 规则树
  • 合并 DOM 树和 CSS 规则树,生成 render(渲染)树。
  • 布局 render 树(回流 / 重排),负责各元素尺寸、位置的计算。
  • 绘制 render 树(painting 重绘),绘制页面像素信息
  • 浏览器会将各层的信息发送给 GPU,GPU 会将各层合成(composite),显示在屏幕上。

构建渲染树时,浏览器主要完成以下工作

  • 从 DOM 树的根节点开始遍历每个可见节点
  • 对每个可见节点,找到 CSS 规则树中对应的规则,并应用它们
  • 根据每个可见节点以及其对应的样式,组合生成渲染树

不可见节点(也就是不会出现在渲染树中的节点)

  • 一些不会渲染输出的节点(如:script、meta、link 等)
  • 一些通过 css 进行隐藏的节点(如:display: none)

注意点:

  • 样式为display:none;的节点会在DOM树中而不在渲染树中
  • visiblity 和 opacity 隐藏的节点在DOM和渲染树中同时存在。
  • 浏览器绘制之后便开始解析js文件,根据js对DOM的操作来确定是否会再次发生重排(回流)和重绘。

二、什么是重排(回流)和 重绘

重排(回流)

当渲染树(render tree)中的一部分或全部因为元素的规模尺寸、大小等改变时,浏览器需要重新计算元素在设备视口(viewport)内的确切位置和大小,需要重新布局render树,这个过程为回流(重排)。

重绘

当页面元素样式改变(如 color、background-color、visibility),但不影响元素在文档流中的的位置时,浏览器只需将新样式赋予元素并进行重新绘制render树操作,这个过程为重绘。

回流必将引起重绘,但重绘不一定会引起回流

什么情况会发生重排(回流)

  • 添加或删除可见的 DOM 元素
  • 元素的位置发生变化
  • 元素的尺寸发生变化(外边距、内边距、边框大小、高度和宽度等)
  • 内容发生变化,(比如文本变化或图片被尺寸大小发生变化)
  • 页面渲染初始化(必然要首次重排)
  • 浏览器的窗口 resize 尺寸变化(因为回流是根据视口的大小来计算元素的位置和大小的)
  • 获取元素位置和大小相关的属性和方法,因为都需要返回最新的布局信息,因此浏览器不得不触发回流重绘来返回正确的值
  • offset(Top / Left / Width / Height)
  • scroll(Top / Left / Width / Height)
  • client(Top / Left / Width / Height)
  • width、height
  • 调用了 getComputeStyle() 或者 IE 的 currentStyle

三、DOM性能优化的4种方法

① 合并多次对css样式的修改,改为一次处理

优化前样式代码

oLi.style.width = "100px";
oLi.style.height = "20px";
oLi.style.background = "pink";

方法一:用cssText一次性处理

oLi.style.cssText = "width:100px;height:20px;background:pink";

方法二:用className一次性处理

.item{width:100px;height:20px;background-color:pink;} /*定义类样式*/
oLi.className='item' //js添加类样式

三种情况下,消耗时间对比

方法一:优化前方法二:cssText处理后方法三:className处理后370.9970703125 ms243.667236328125 ms147.678955078125 ms

<body>
<ul id="list"></ul>
<script>
console.time("优化前"); //测试执行时间代码
var oUl = document.getElementById("list");
for (var i = 0; i < 50000; i++) {
var oLi = document.createElement("li");
//方法一
oLi.style.width = "100px";
oLi.style.height = "20px";
oLi.style.background = "pink";
//方法二:
// oLi.style.cssText = "width:100px;height:20px;background:pink";
//方法三:
/* oLi.className = "item";
oUl.appendChild(oLi);*/
}
console.timeEnd("优化前"); //测试执行时间代码
</script>
</body>

② 对DOM查询做缓存

不要频繁的去查询DOM,把查询到的内容保存在变量中,后面直接通过变量来操作就好。

未优化前,要频繁的查询DOM

for (var i = 0; i < document.querySelectorAll("li").length; i++) {....... }

优化后,只需要查询一次DOM

var n = document.querySelectorAll("li").length;
for (var i = 0; i < n; i++) {......}

优化后与优化前耗时对比未优化前耗时优化后耗时206.722900390625 ms154.436767578125 ms<script>
window.onload = function () {
//优化前代码
console.time("时间记录");//测试执行时间代码
for (var i = 0; i < document.querySelectorAll("li").length; i++) {
console.log(i);
}
/* 优化后代码
var n = document.querySelectorAll("li").length;
for (var i = 0; i < n; i++) {
console.log(i);
} */
console.timeEnd("时间记录"); //测试执行时间代码
};
</script>
<body>
<ul>
<li></li>
<!--以下重复,菜5000个li-->
</ul>
</body>

③、将频繁DOM操作改为一次性操作

这里面要理解一个概念DOM文档片段(虚拟节点对象)文档片段的作用是充当其它要被添加到文档的节点的仓库 。他自己永远不会被添加到文档树中,但是他能包含和操作节点。可以通过
document.createDocumentFragment()方法来创建文档片段。

具体的代码实现

<body>
   <ul id="list"></ul>
   <script>
       console.time("优化后");
       const oUl = document.getElementById("list");
       //创建一个文档片段,些时还没有插入到DOM中,存在内存中
       const frag = document.createDocumentFragment();
       //执行行入操作
       for (let x = 0; x < 10000; x++) {
           const li = document.createComment("li");
           //将DOM先放到文档片段中,这样不会频繁操作DOM
           frag.appendChild(li);
      }
       //最后一次性将10000个li插入到DOM树中
       oUl.appendChild(frag);
       console.timeEnd("优化后");
   </script>
</body>

这个优化消耗的时间需要在正常的网页上去测试才能看到效果,因为如果页面中没有其它元素,也就不会造成重排和重绘,那对于时间上的消耗也是看不到的。大家可以自己行测试。

④ 操作DOM前,先把DOM节点删除或隐藏

如果要对一个元素进行多次DOM操作,可以先将其隐藏,操作完成后再显示。这样只在隐藏和显示时触发2次重排,而不会是在每次进行操作时都出发一次重排。因为display:none时的元素不在渲染树中,因此对隐藏的元素操作不会引发其他元素的重排。

<body>
   <ul id="list"></ul>
   <script>
       var oUl = document.getElementById("list");
       oUl.style.display = "none";/*先隐藏元素*/
       for (var i = 0; i < 15000; i++) {
           var li = document.createElement("li");
           oUl.appendChild(li);
      }
       oUl.style.display = "block";/*DOM操作完再显示*/
   </script>
</body>

⑤ 事件代理

事件委托,利用浏览器事件冒泡捕获减少页面事件绑定,我们可以指定一个事件处理程序就可以管理某一类型的所有事件。事件函数过多会占用大量内存,而且绑定事件的DOM元素越多会增加访问dom的次数,对页面的交互就绪时间也会有延迟。

<body>
   <ul id="list">
       <li>1</li>
       <li>2</li>
       <li>3</li>
       <li>4</li>
   </ul>
   <script>
       //事件委托
       var oUl = document.getElementById("list");
       oUl.onclick = function (e) {
           console.log(e.target.innerHTML);
      };
       /* 未用事件委托  
    var li = document.querySelectorAll("#list li");
    var n = li.length;
    for (let i = 0; i < n; i++) {
      li[i].onclick = function () {
        console.log(this.innerHTML);
      };
    } */
   </script>
</body>

DOM是JS阶段重要的教学内容,在星辰班已经讲了40个小节的课程,更多完整JavaScript课程体系在我们的系统班里有完整的呈现,包含了JavaScript基础篇、重点、算法、原理、面试题、实战案例讲解!同时也为你提供了前端高级工程师成长体系!(详细看下图内容)

如果需要深度学习的同学可以联系助理老师了解详细的课程以及课程的报名方式!(不定期会推出活动,有大额优惠券推出,活动详情联系助理老师了解即可!)

如果你才开始学习前端,那么可以先学习我们的三十天计划(零基础的同学报名系统班同学可以和老师沟通制定学习计划,可以得到更快的成长!)

为帮助到一部分同学不走弯路,真正达到一线互联网大厂前端项目研发要求,首次实力宠粉,打造了《30天挑战学习计划》,内容如下:

HTML/HTML5,CSS/CSS3,JavaScript,真实企业项目开发,云服务器部署上线,从入门到精通

  • PC端项目开发(1个)
  • 移动WebApp开发(2个)
  • 多端响应式开发(1个)

共4大完整的项目开发 !一行一行代码带领实践开发,实际企业开发怎么做我们就是怎么做。从学习一开始就进入工作状态,省得浪费时间。

从学习一开始就同步使用 Git 进行项目代码的版本的管理,Markdown 记录学习笔记,包括真实大厂项目的开发标准和设计规范,命名规范,项目代码规范,SEO优化规范

从蓝湖UI设计稿 到 PC端,移动端,多端响应式开发项目开发

  • 真机调试,云服务部署上线;
  • Linux环境下 的 Nginx 部署,Nginx 性能优化;
  • Gzip 压缩,HTTPS 加密协议,域名服务器备案,解析;
  • 企业项目域名跳转的终极解决方案,多网站、多系统部署;
  • 使用 使用 Git 在线项目部署;

这些内容在《30天挑战学习计划》中每一个细节都有讲到,包含视频+图文教程+项目资料素材等。只为实力宠粉,真正一次掌握企业项目开发必备技能,不走弯路 !

过程中【不涉及】任何费用和利益,非诚勿扰 。

如果你没有添加助理老师微信,可以添加下方微信,说明要参加30天挑战学习计划,来自头条号!老师会邀请你进入学习,并给你发放相关资料。

30 天挑战学习计划 Web 前端从入门到实战 | arry老师的博客-艾编程

Vue.js 虚拟DOM和性能优化 虚拟 DOM 是真实 DOM 的抽象表示,用 JavaScript 对象来描述 DOM 节点和它们之间的关系。它是高效渲染的关键技术,主要目标是减少真实 DOM 操作的开销。传统的 Diff 算法(比如 O(n^3))复杂度很高,Vue 优化了这一过程,大幅降低了性能开销。 阅读详情

相关推荐

JS DOM 操作与性能优化实战指南:构建高效可交互的页面结构

本文系统介绍了JSDOM操作的核心优化方案,帮助开发者构建高效流畅的页面交互体系。主要内容包括:1)基础DOM操作优化,强调缓存查询结果和批量修改样式;2)大量元素渲染的虚拟列表技术,减少DOM节点数量;3)动态DOM的事件管理策略,防止内存泄漏。文章提出了DOM操作的"三原则"(少查询、少修改、批量处理)和性能优化的"三要点"(避免回流、复用节点、虚拟渲染),并分享了工具类封装和事件命名空间隔离等工程化实践方案,为企业级前端项目提供了完整的DOM优化思路。

lamehsl的专栏 1390

DOM优化方案

1、重绘和重排 1.1 重绘和重排是什么 重绘是指一些样式的修改,元素的位置和大小都没有改变; 重排是指元素的位置或尺寸发生了变化,浏览器需要重新计算渲染树,而新的渲染树建立后,浏览器会重新绘制受影响的元素。 1.2 浏览器渲染页面 去参加面试总会被问到一个问题,那就是“向浏览器输入一行url会发生什么?”,这个问题的答案除了要回答网络方面的知识还牵扯到浏览器渲染页面问题。当我们的浏览器接收到从服...

weixin_34212189的博客 295

深入JavaScript性能优化:【JavaScript性能瓶颈全景扫描】DOM操作的成本,内存泄漏的四大元凶

性能优化不是单纯的技术竞赛,而是用户体验与开发效率的平衡艺术。编码阶段:遵循最佳实践(占60%收益)构建阶段:自动化优化(占30%收益)运行时阶段:动态调整策略(占10%收益)通过Chrome User Experience Report数据显示,页面加载时间每减少100ms,转化率平均提升1.2%。性能优化最终要服务于业务目标,在代码效率与开发成本之间找到最佳平衡点。学习教程(传送门)1、掌握JAVA入门到进阶知识(持续写作中……2、学会Oracle数据库用法(创作中……

王大师企业官方博客 2404

关于面试真题的压迫

使用事件委托:在父元素上监听事件,而不是为每个子元素都添加事件监听器。这样可以减少事件处理程序的数量,提高性能。缓存DOM查询:避免重复查询DOM元素,将查询结果存储在变量中,以便后续使用。减少DOM操作:尽量减少对DOM的修改操作,因为DOM操作是非常昂贵的。可以将多个操作合并为一次操作,或者先将需要修改的元素拷贝到一个文档片段中,修改完毕后再一次性插入到DOM中。使用文档片段:在需要插入大量DOM节点时,可以先将它们插入到文档片段中,然后再一次性插入到文档中。这样可以减少页面渲染的次数,提高性能。

weixin_55493330的博客 1008

JavaScript进阶-第十篇:JavaScript 与 DOM 高级操作-DOM 性能优化

在 JavaScript 中,是常用的 DOM 选择方法。为了优化其性能,应使用具体的选择器,避免过于宽泛的选择,从而减少匹配元素的数量。

无 230

BLHeli_S电调刷Bluejay固件实战:解锁双向DShot与RPM滤波全攻略

本文详细介绍了如何为BLHeli_S电调刷写开源Bluejay固件,以解锁双向DShot协议与RPM滤波等关键功能。内容涵盖硬件兼容性检查、固件刷写全流程、双向DShot启用与OSD报错解决方案,并对48kHz与96kHz PWM频率的选择提供了实战建议,帮助穿越机玩家在不更换硬件的前提下显著提升飞行性能与操控体验。

weixin_29188997的博客 513

DOM的性能问题、优化

一、DOM 的性能问题 【1】核心问题     当解析的html文件很大时,生成DOM树占用内存较大,同时遍历(不更新)元素耗时也更长。但这都不是重点,DOM的核心问题是:DOM修改导致的页面重绘、重新排版!重新排版是用户阻塞的操作,同时,如果频繁重排,CPU使用率也会猛涨!     DOM操作会导致一系列的重绘(repaint)、重新排版(reflow)操作。为了确保执行结

joy134431的博客 1201

使用IDF和VSCode构建ESP32的开发环境

本文主要介绍构建使用IDF和VS-CODE 工具构建ESP32的开发环境的详细步骤,还应用IDF和VS CODE创建ESP32的项目文件,并实现编译和下载功能。

mftang的博客 6821

Dom操作的性能优化

dom操作的性能优化方法

weixin_46422035的博客 2038

【yolov8】与yolov5的区别及改进详解

yolov8-----有点厉害的目标检测框架.

qq_44878985的博客 3万+

(35)远程识别(又称无人机识别)(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(35) 远程识别(又称无人机识别)》。

无人机开发(开源Ardupilot) 4万+

【JS DOM节点优化具体做法】

DOM节点优化可以通过以下具体方法来实现: 1. 减少DOM操作次数:尽可能地将多个DOM操作合并成一个,减少JS代码对DOM的访问次数。 2. 缓存DOM查询结果:将重复使用的DOM节点缓存起来,避免在每次操作时都进行DOM查询。 3. 使用事件委托:在父节点上监听事件,而不是在每个子节点上,减少事件处理程序的数量,提高性能。 4. 使用文档碎片(DocumentFragment):将DOM节点插入文档碎片中,在插入到文档中一次性渲染,减少页面重绘次数。 5. 使用CSS选择器代替JavaScript查找

前端-CV全粘工程师 388

谷歌学术用publish-or-perish来对引用量排序

用谷歌学术搜索文献的时候发现不能按照引用量高低进行排序,网上提供了这个软件。 下载地址如下:Publish or Perish (harzing.com)https://harzing.com/resources/publish-or-perish 关于软件界面页面和各种指标的介绍,可以参考中科大的这个PPT: 文献分析软件——publish or perish(精品·公开课件).ppt (book118.com)https://max.book118.com/html/2018/1124/813

m0_48878989的博客 1万+

JavaScript性能优化实战(三):DOM操作性能优化

本文介绍了5大DOM操作优化技巧,通过生动比喻和代码对比,帮助开发者提升网页性能:1)使用DocumentFragment批量操作减少重排;2)缓存DOM查询结果避免重复遍历;3)用requestAnimationFrame实现流畅动画;4)分离读写操作防止强制同步布局;5)采用虚拟DOM实现最小化更新。文章强调优化核心是减少实际DOM操作,建议使用性能工具精准定位瓶颈,在开发效率与性能间取得平衡。

七夜zippoe的博客 1084

华为2022硬件逻辑笔试题

单选题(每题两分) 1.以下关于过程赋值的描述,不正确的是() A在非阻塞性过程赋值中,使用赋值符号“< =” B赋值操作符是“=”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中,对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间步发生(根据时延:如果是0时延,那么在当前时间步结束) D非阻塞性过程赋值在其后所有语句执行前执行 解:D 2.芯片的功耗和下列哪种不强相关_____________。 A资源利用率 B核电压 C组合逻辑级数 D翻转率 解:A 3.下列说

weixin_44072819的博客 1万+

RagFlow实战:如何用DeepDoc引擎高效处理扫描PDF文档(附完整代码解析)

本文详细解析了如何利用RagFlow的DeepDoc引擎高效处理扫描PDF文档。通过实战演示从环境搭建、PDF预处理、文本检测与识别,到布局分析与表格结构提取的完整流程,并提供了完整的代码实现。该方案超越了传统OCR,能输出保留原始版面信息的结构化数据,为构建高质量知识库提供了强大支持。

weixin_29245767的博客 300

JavaScript性能优化:DOM操作优化实战

JavaScript性能优化是提升Web应用质量的核心要素,直接影响用户体验与业务成果。研究表明,页面加载延迟1秒可能导致转化率下降7%。高效的JavaScript执行能减少主线程阻塞,避免动画卡顿或操作延迟,尤其在移动端低性能设备上更为关键。优化内存管理与减少冗余计算可降低浏览器资源消耗,防止因内存泄漏导致的崩溃,提升应用稳定性。在竞争激烈的互联网环境中,性能优势已成为产品差异化的关键因素,直接影响用户留存与商业价值。因此,性能优化应作为开发全周期的核心实践,而非事后补救措施。

weixin_49707375的博客 1292

基于ARKitScenes和YOLOv11的元宇宙3D物体检测系统设计与实现

引言随着元宇宙概念的兴起和增强现实(AR)技术的快速发展,3D物体检测成为了计算机视觉领域的重要研究方向。与传统的2D物体检测不同,3D物体检测不仅需要识别物体类别,还需要估计物体在三维空间中的位置、大小和朝向。本文将详细介绍如何利用ARKitScenes数据集和YOLOv11算法构建一个完整的3D物体检测系统,并提供可视化UI界面。相关工作与技术背景2.1 ARKitScenes数据集介绍ARKitScenes是苹果公司发布的一个大规模的3D场景理解数据集,包含丰富的室内场景数据。

YOLO 411

【JavaScript性能优化】DOM操作性能黑洞与渲染层合并策略

摘要:本文聚焦于JavaScript性能优化中DOM操作性能黑洞与渲染层合并策略的相关内容。详细剖析了高频触发重排与重绘、复合层爆炸导致GPU内存过载、事件冒泡引起的意外渲染更新等核心问题,阐述了这些问题对页面性能的严重影响。通过具体的优化实战案例,如批量DOM更新、使用will-change优化动画等,展示了提升性能的有效方法。同时,介绍了使用requestAnimationFrame合并视觉变更、CSS Containment属性限制重排范围、OffscreenCanvas离屏渲染复杂图形等进阶方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 983

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

javascript JavaScript强化教程——DOM编程性能优化

本文为H5EDU机构官方HTML5培训教程,主要介绍:JavaScript强化教程——DOM编程性能优化DOM的访问与修改访问DOM元素是有代价的——修改元素侧更为昂贵,因为他会导致浏览器重新计算页面的几何变化。当然,最坏的情况是在循环中访问或修改元素,尤其是对HTML元素几何循环操作。为了让你对DOM编程带来的性能问题有个量化的了解,请看下面的简单实例: function...

avr35764的博客 128

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JavaScript性能优化之dom操作

组内同时总结的关于javascript性能优化注意些节。记录一下。1.批量增加Dom尽量使用修改innerHTML的方式而不是用appendChild的方式; 因为使用innerHTML开销更小,速度更快,同时也更加内存安全. 有一点需要注意的是,用innerHTML方式添加时,一定不要在循环中使用innerHTML += 的方式添加,这样反而会使速度减慢; 而是应该中间用array缓存起来,循环结束后调用xx.innerHTML = array.join(‘’);的方式,或者至少保存到string中再插到

飞鸟Blog 970

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

原生JS进阶实战:从DOM操控到性能优化的核心技巧

本文从DOM操控、事件机制、异步编程、性能优化四个核心维度,拆解了原生JS的实用技巧,并通过一个分页组件实战案例,将知识点融会贯通。要写出高质量的原生JS代码,关键在于“理解原理、规避坑点、注重性能”。进阶方向推荐:深入学习JS引擎工作原理(V8引擎)、事件循环机制;研究原生JS的设计模式(如工厂模式、观察者模式);学习ES6+新特性(Proxy、Reflect、Symbol等)的实战应用;尝试用原生JS封装常用工具库(如防抖节流、深拷贝、请求工具等)。

A2420734930的博客 1183

《高效 DOM 操作:JavaScript 性能优化的核心要点》

JavaScript 性能优化是一个综合性的工作,涉及到代码编写的各个层面。从减少 DOM 操作和优化内存管理,到选择高效的算法和数据结构,再到合理运用异步编程等,每一个优化点都可能对网页应用的性能产生显著影响。在实际开发中,我们需要根据具体的业务需求和场景,综合运用这些优化策略,打造出高效、流畅的 Web 应用,为用户提供更好的体验。随着 JavaScript 语言的不断发展和浏览器技术的持续进步,性能优化的方法和工具也在不断更新,开发者需要持续学习和关注,以保持代码的高性能。

deying0865423的博客 868

JavaScript性能优化 DOM编程

JavaScript性能优化 DOM编程 最近在研读《高性能JavaScript》,在此做些简单记录。示例代码可在此处查看到。 一、DOM 1)DOM和JavaScript 文档对象模型(DOM)是一个独立于语言的,用于操作XML和HTML文档的程序接口(API)。 浏览器通常会把DOM和JavaScript独立实现。例如Chrome中使用Webkit的WebCore库渲染页面,用V8作为Jav...

weixin_34122604的博客 300

js的前端性能优化,虚拟DOM

虚拟DOM的创建即使用,如何提升用户体验的同时优化需求

weixin_57456178的博客 702
上一篇: 彻底搞懂JavaScript防抖与节流
下一篇: 前端CSS Flex布局8大重难点知识,收藏起来吧
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾编程前端技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值