DocumentFragment
2023 javascriptDocumentFragment 接口表示一个没有父结点的最小文档对象。
它是 Document 的轻量级标签,可以存储 DOM 结点。最主要的区别是它不会在文档显示,不会影响文档布局。
使用
通常的用例是创建文档片段,将元素附加到文档片段,然后将文档片段附加到 DOM 树。在 DOM 树中,文档片段被其所有的子元素所代替。因为文档片段存在于内存中,并不在 DOM 树中,所以将子元素插入到文档片段时不会引起页面回流(对元素位置和几何上的计算)。因此,使用文档片段通常会带来更好的性能。
性能
但是根据 MDN DocumentFragment#performance 所言,DocumentFragment 的性能优化往往被夸大了,性能差异并不大,更重要的是可读性。
使用例子
<ul></ul>
const ul = document.querySelector('ul');
const fruits = ['Apple', 'Orange', 'Banana', 'Melon'];
const fragment = new DocumentFragment();
for (const fruit of fruits) {
const li = document.createElement('li');
li.textContent = fruit;
fragment.append(li);
}
ul.append(fragment);
React.Fragment
在 React 里也有对应的 Fragment 组件,<Fragment>
经常被用作 <>...</>
,对元素进行分组且没有包含结点。
<>
<OneChild />
<AnotherChild />
</>