DOM 操作与优化

中等 🟡浏览器原理
8 个标签
预计阅读时间:88 分钟
浏览器原理DOMDOM 操作性能优化虚拟列表IntersectionObserverWeb WorkerMutationObserver

DOM 操作与优化

DOM (Document Object Model) 是浏览器对 HTML 文档的结构化表示,DOM 操作是前端开发中最常见的操作之一,也是性能瓶颈的主要来源。可以把 DOM 想象成一棵不断被"翻修"的活体建筑:每次改动都不是免费的——墙体挪一寸,整栋楼可能都要重新丈量(重排),墙面刷个新颜色至少也要重新粉刷一遍(重绘)。理解这套"施工成本"模型,是写出流畅前端界面的地基。

本篇会从 DOM 树结构讲起,逐层深入重排/重绘、强制同步布局、批量操作、事件机制、虚拟 DOM,再扩展到现代浏览器提供的一整套"减负"工具:IntersectionObserver、requestIdleCallback、Web Worker、MutationObserver,以及工程中真正落地的虚拟列表方案。每个主题都配代码示例、真实数据和常见坑,尽量做到"看完就能用"。

🌳 DOM 树结构

什么是 DOM 树: 浏览器解析 HTML 后,会在内存里生成一棵由节点(Node)组成的树形结构,这棵树就是 DOM。JavaScript 操作页面内容、结构、样式,本质上都是在操作这棵树。可以类比公司的组织架构图:CEO(document)在最顶层,往下是各部门(元素节点),部门里有具体的人(文本节点),架构图上还可能贴着便签(注释节点)。

DOM 节点类型:

Element:元素节点,表示HTML或XML文档中的元素,如div、span、p等,是DOM树中最常见的节点类型,可以通过document.createElement创建
Text:文本节点,表示元素或属性中的文本内容,是DOM树的叶子节点,可以通过document.createTextNode创建
Comment:注释节点,表示HTML或XML文档中的注释,不会显示在页面上,但可以通过DOM API访问和操作
Document:文档节点,表示整个HTML或XML文档,是DOM树的根节点,可以通过document对象访问,提供创建其他节点的方法
DocumentFragment:文档片段节点,轻量级的文档对象,用于在内存中存储节点,可以一次性插入到文档中,减少DOM操作次数

节点类型对照表:

| nodeType 值 | 节点类型 | 常见场景 |

|---|---|---|

| 1 | Element(元素节点) | `

`、``、`