मैं दस्तावेज़ के टुकड़े और DOM रिफ्लो के बारे में पढ़ रहा था और सोच रहा था कि यह कैसे document.createDocumentFragment
अलग है document.createElement
जैसे कि उनमें से कोई भी DOM में मौजूद नहीं है जब तक कि मैं उन्हें DOM तत्व के साथ जोड़ नहीं देता।
मैंने एक परीक्षण किया (नीचे) और उन सभी ने ठीक उसी समय (लगभग 95ms) की मात्रा ली। एक अनुमान के अनुसार यह संभवतः किसी भी तत्व पर कोई शैली लागू नहीं होने के कारण हो सकता है, इसलिए शायद कोई भी रिफ्लेक्ट न हो।
वैसे भी, नीचे दिए गए उदाहरण के आधार पर, मुझे डोम में सम्मिलित करने के createDocumentFragment
बजाय इसका उपयोग क्यों करना चाहिए createElement
और दोनों के बीच क्या अंतर है।
var htmz = "<ul>";
for (var i = 0; i < 2001; i++) {
htmz += '<li><a href="#">link ' + i + '</a></li>';
}
htmz += '<ul>';
//createDocumentFragment
console.time('first');
var div = document.createElement("div");
div.innerHTML = htmz;
var fragment = document.createDocumentFragment();
while (div.firstChild) {
fragment.appendChild(div.firstChild);
}
$('#first').append(fragment);
console.timeEnd('first');
//createElement
console.time('second');
var span = document.createElement("span");
span.innerHTML = htmz;
$('#second').append(span);
console.timeEnd('second');
//jQuery
console.time('third');
$('#third').append(htmz);
console.timeEnd('third');