高效操作 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 这样的大型项目需要对性能进行严格控制。由于其强大的插件生态系统,核心必须尽可能核心和轻量化,这也是其广泛采用的原因。

目录
相关文章
|
传感器 Ubuntu 算法
【6. 激光雷达接入ROS】(1)
【6. 激光雷达接入ROS】(1)
554 0
|
消息中间件 存储
RabbitMQ的高可用机制
RabbitMQ 提供了多种高可用机制来确保消息队列的可靠性和稳定性。
1074 0
|
SQL 缓存 AliSQL
AliSQL
阿里云在MySQL和PostgreSQL社区版的基础上,对内核进行了深度定制
1073 0
|
敏捷开发 算法 安全
如何精准展现C/C++项目亮点:高级工程师面试指南
如何精准展现C/C++项目亮点:高级工程师面试指南
299 1
|
10月前
|
Python
Python成员运算符
Python成员运算符
98 2
|
11月前
|
JavaScript 算法 前端开发
vue 中diff算法
【10月更文挑战第10天】
154 1
|
安全 应用服务中间件 Linux
Linux云服务器下安装Tomcat8
Linux云服务器下安装Tomcat8
|
人工智能 安全 编译器
什么是Zig? Zig为什么成为最赚钱的语言? 编程语言Zig是什么? 编程语言Zig:简单、安全、高效的系统级编程语言
什么是Zig? Zig为什么成为最赚钱的语言? 编程语言Zig是什么? 编程语言Zig:简单、安全、高效的系统级编程语言
822 0
算法训练Day35|860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球
算法训练Day35|860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球