DOM树 (Document Object Model Tree)
DOM树是HTML或XML文档在内存中的表示形式,它是一个树状结构的对象模型,允许程序和脚本动态访问和更新文档的内容、结构和样式。
基本概念
-
节点(Node): DOM树的基本单位,包括:
- 文档节点(Document),代表整个HTML文档
- 元素节点(Element),代表各种标签
- 文本节点(Text),代表双标签中间的文字
- 属性节点(Attr),代表元素的各种属性
- 注释节点(Comment)等
-
层级关系:
- 父节点(Parent)
- 子节点(Child)
- 兄弟节点(Sibling)
DOM树结构示例
对于一个简单的HTML文档:
<!DOCTYPE html>
<html>
<head>
<title>示例页面</title>
</head>
<body>
<h1>标题</h1>
<p class="content">段落内容</p>
</body>
</html>
对应的DOM树结构大致如下:
Document
└── html
├── head
│ └── title
│ └── "示例页面"
└── body
├── h1
│ └── "标题"
└── p (class="content")
└── "段落内容"
DOM操作
通过JavaScript可以操作DOM树:
// 获取元素
const para = document.querySelector('p.content');
// 修改内容
para.textContent = '修改后的内容';
// 修改样式
para.style.color = 'red';
// 创建新元素
const newDiv = document.createElement('div');
newDiv.textContent = '新创建的div';
// 添加到DOM树
document.body.appendChild(newDiv);
// 删除元素
const h1 = document.querySelector('h1');
h1.parentNode.removeChild(h1);
虚拟DOM
现代前端框架(如React、Vue)使用虚拟DOM来提高性能:
- 在内存中维护一个轻量级的DOM表示
- 当状态变化时,先在虚拟DOM上进行变更
- 通过diff算法比较虚拟DOM和真实DOM的差异
- 只更新实际发生变化的部分
DOM树是Web开发中非常重要的概念,理解DOM树结构对于前端开发至关重要。