मैं दस्तावेज़ के टुकड़े और 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');