举例说明createDocumentFragment和createElement有什么区别?
都是前端开发中常用的 DOM 操作方法,但它们的用途和特性有所不同。假设我们要动态创建并添加 10 个。
·
createDocumentFragment 和 createElement 都是前端开发中常用的 DOM 操作方法,但它们的用途和特性有所不同。以下是它们之间的主要区别:
-
用途:
createElement:此方法用于创建一个新的元素节点,并可以将其插入到 DOM 中。例如,如果你想在页面中动态添加一个<div>元素,你可以使用createElement方法。createDocumentFragment:此方法用于创建一个新的空白文档片段(DocumentFragment)。DocumentFragment 是一个轻量级的文档结构,它可以包含 DOM 节点,但不是真正的 DOM 树的一部分。通常,当你需要创建多个元素并将它们一次性添加到 DOM 中时,使用 DocumentFragment 可以提高性能。
-
性能:
- 当你使用
createElement创建多个元素并逐个添加到 DOM 中时,每次添加都会触发页面的重排(reflow)和重绘(repaint),这可能会导致性能下降。 - 而使用
createDocumentFragment,你可以先在文档片段中创建和修改元素,然后将整个文档片段一次性添加到 DOM 中。这样,只会触发一次重排和重绘,从而提高了性能。
- 当你使用
-
示例:
假设我们要动态创建并添加 10 个 <li> 元素到一个 <ul> 中。
使用 createElement:
const ul = document.querySelector('ul');
for (let i = 0; i < 10; i++) {
const li = document.createElement('li');
li.textContent = `Item ${i + 1}`;
ul.appendChild(li); // 每次添加都会触发重排和重绘
}
使用 createDocumentFragment:
const ul = document.querySelector('ul');
const fragment = document.createDocumentFragment();
for (let i = 0; i < 10; i++) {
const li = document.createElement('li');
li.textContent = `Item ${i + 1}`;
fragment.appendChild(li); // 在文档片段中添加,不会触发重排和重绘
}
ul.appendChild(fragment); // 一次性将文档片段添加到 DOM 中,只触发一次重排和重绘
-
总结:
createElement用于创建单个元素节点。createDocumentFragment用于创建一个可以包含多个节点的文档片段,以提高批量添加节点的性能。
更多推荐

所有评论(0)