高效操作 DOM

简介: 高效操作 DOM

我将讨论在管理和更新 DOM 时避免过度内存使用的最佳实践,以使您的应用程序达到极快的速度™️。

DOM: 文档对象模型 – 简介
当您渲染 HTML 时,浏览器中这些渲染元素的实时视图称为 DOM。您可以在开发者工具的 “元素” 检查器中看到它:

Chrome 开发者工具中的元素面板

它本质上是一个树结构,其中每个元素都是一个叶子。整个 API 集专门用于修改这个元素树。

以下是一些常见的 DOM API 列表:

querySelector()
querySelectorAll()
createElement()
getAttribute()
setAttribute()
addEventListener()
appendChild()

这些 API 附加在 document 对象上,所以您可以像这样使用它们:const el = document.querySelector("#el");。它们也可用于所有其他元素,因此如果您有一个元素引用,您可以使用这些方法,并且它们的功能范围限于该元素。

const nav = document.querySelector("#site-nav");
const navLinks = nav.querySelectorAll("a");

这些方法将在浏览器中可用以修改 DOM,但在服务器端 JavaScript(如 Node.js)中不可用,除非您使用像 js-dom 这样的 DOM 模拟器。

作为一个行业,我们将大部分直接渲染工作转移到了框架上。所有 JavaScript 框架(React、Angular、Vue、Svelte 等)都在底层使用这些 API。虽然我认识到框架的生产力优势通常超过了手动 DOM 操作的潜在性能提升,但我希望在本文中揭开这些底层操作的神秘面纱。

为什么首先要自己操作 DOM?
主要原因是性能。框架可能会添加不必要的数据结构和重渲染,导致许多现代 Web 应用中令人讨厌的卡顿/冻结现象。这是由于垃圾回收器需要处理大量代码而被迫超负荷工作。

缺点是手动操作 DOM 会产生更多代码。这可能会变得复杂,这也是为什么使用框架和围绕 DOM 的抽象会带来更好的开发者体验的原因。尽管如此,有些情况下您可能需要额外的性能提升。这个指南就是为这些情况准备的。

VS Code 是基于手动 DOM 操作构建的
Visual Studio Code 就是这样的案例之一。VS Code 是用原生 JavaScript 编写的,“尽可能接近 DOM”。像 VS Code 这样的大型项目需要对性能进行严格控制。由于其强大的插件生态系统,核心必须尽可能核心和轻量化,这也是其广泛采用的原因。

目录
相关文章
|
9月前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。
|
XML JavaScript 前端开发
你真的知道DOM吗(下)----(其他类型,DOM操作技术)
你真的知道DOM吗(下)----(其他类型,DOM操作技术)
64 0
你真的知道DOM吗(下)----(其他类型,DOM操作技术)
|
JavaScript 前端开发
|
JavaScript
DOM 操作
DOM 操作
|
数据采集 JavaScript 前端开发
同样的 DOM 操作为什么会有不一样的结果?
深夜光顾小网站,一进去竟然全部是广告,可惜 wuhen 模式下无法开启我的 Adblock,可我再转念一下,删广告这种事还用得着浏览器插件,不就是一个 DOM 操作?我直接一行代码删完
|
前端开发 JavaScript 编解码
|
JavaScript 前端开发
|
XML 数据格式 开发者
使用 dom4j 支持 XPATH 的操作二| 学习笔记
快速学习使用 dom4j 支持 XPATH 的操作二。
使用 dom4j 支持 XPATH 的操作二| 学习笔记
|
XML Java 数据格式
使用 dom4j 支持 XPATH 的操作一| 学习笔记
快速学习使用 dom4j 支持 XPATH 的操作一。
使用 dom4j 支持 XPATH 的操作一| 学习笔记
|
JavaScript 算法
虚拟dom一定更快吗?
虚拟dom一定更快吗?

热门文章

最新文章