性能優(yōu)化——DocumentFragment

概念

DocumentFragment 接口表示文檔的一部分(或一段)。更確切地說,它表示一個(gè)或多個(gè)鄰接的Document 節(jié)點(diǎn)和它們的所有子孫節(jié)點(diǎn)。

DocumentFragment 節(jié)點(diǎn)不屬于文檔樹,繼承的 parentNode 屬性總是 null。

不過它有一種特殊的行為,該行為使得它非常有用,即當(dāng)請(qǐng)求把一個(gè) DocumentFragment 節(jié)點(diǎn)插入文檔樹時(shí),插入的不是 DocumentFragment 自身,而是它的所有子孫節(jié)點(diǎn)。這使得 DocumentFragment 成了有用的占位符,暫時(shí)存放那些一次插入文檔的節(jié)點(diǎn)。它還有利于實(shí)現(xiàn)文檔的剪切、復(fù)制和粘貼操作

說明

我們知道每執(zhí)行一次DOM操作都會(huì)導(dǎo)致頁(yè)面的重繪和重新排版,比如當(dāng)進(jìn)行循環(huán)批量插入節(jié)點(diǎn)時(shí),每一次插入就會(huì)刷新一次DOM樹,嚴(yán)重影響頁(yè)面性能。

這時(shí)候我們可以選擇使用DocumentFragment來臨時(shí)保存要插入的所有節(jié)點(diǎn),循環(huán)完成后再插入到主文檔里邊,這樣就只需要修改一次DOM樹。

代碼

var fragment = document.createDocumentFragment();

for (let i = 0;i<10;i++){
  let node = document.createElement("p");
  node.innerHTML = i;
  fragment.appendChild(node);
}

document.body.appendChild(fragment);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容