了解DocumentFragment 給我們帶來的性能優(yōu)化

什么是DocumentFragment?

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

不過它有一種特殊的行為,該行為使得它非常有用,即當(dāng)請求把一個DocumentFragment 節(jié)點插入文檔樹時,插入的不是 DocumentFragment 自身,而是它的所有子孫節(jié)點。

這使得 DocumentFragment 成了有用的占位符,暫時存放那些一次插入文檔的節(jié)點。它還有利于實現(xiàn)文檔的剪切、復(fù)制和粘貼操作。

可以用 Document.createDocumentFragment() 方法創(chuàng)建新的空 DocumentFragment 節(jié)點。
也可以用 Range.extractContents() 方法Range.cloneContents() 方法 獲取包含現(xiàn)有文檔的片段的 DocumentFragment 節(jié)點。

用途

同時我們了解到當(dāng)需要對頁面DOM進行操作的時候必然會導(dǎo)致多次 重繪、回流(什么是重繪,回流?)。這樣會加大頁面的負擔(dān)。影響頁面性能。因此我們可以創(chuàng)建這樣一個臨時占位符。進行操作以下是DEMO:

// Create the fragment
var fragment = document.createDocumentFragment();

//add DOM to fragment 
var spanNode = document.createElement("span");
spanNode.innerHTML = "Hello World";
fragment.appendChild(spanNode);


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

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

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