DocumentFragment

文档碎片

什么是文档碎片

它被作为一个轻量版的 Document 使用,就像标准的 document 一样,存储由节点(nodes)组成的文档结构。与 document 相比,最大的区别是它不是真实 DOM 树的一部分,它的变化不会触发 DOM 树的重新渲染(重绘重排),且不会对性能产生影响。

使用

最常用的方法是使用 DocumentFragment 创建并组成一个 DOM 子树,然后使用 Node 接口方法(如:appendChild()insertBefore())将其插入到 DOM 中。这种情况下会插入片段的所有子节点,并留下一个空的 DocumentFragment。因为所有的节点会被一次插入到文档中,所以仅会发生一个重渲染的操作,而不是每个节点分别被插入到文档中从而发生多次重渲染的操作

1
2
3
4
5
6
7
8
9
10
11
12
const list = document.querySelector('#list')
const fruits = ['Apple', 'Orange', 'Banana', 'Melon']

const fragment = new DocumentFragment()

fruits.forEach((fruit) => {
const li = document.createElement('li')
li.textContent = fruit
fragment.appendChild(li)
})

list.appendChild(fragment)

特征

文档片段节点的三个node属性——nodeType、nodeName、nodeValue分别是11、’#document-fragment’和null,文档片段节点没有父节点parentNode

1
2
3
4
5
var frag = document.createDocumentFragment();
console.log(frag.nodeType);//11
console.log(frag.nodeValue);//null
console.log(frag.nodeName);//'#document-fragment'
console.log(frag.parentNode);//null

DocumentFragment
http://example.com/2022/09/23/DocumentFragment/
Author
John Doe
Posted on
September 23, 2022
Licensed under