J'étais lecture de fragments de documents et DOM reflow et se demandait comment document.createDocumentFragment
diffère de document.createElement
car il semble qu'aucun d'entre eux n'existe dans le DOM jusqu'à ce que je les ajoute à un élément du DOM.
J'ai fait un test (ci-dessous) et tous ont pris exactement le même temps (environ 95 ms). A mon avis, cela pourrait être dû au fait qu'aucun style n'a été appliqué à aucun des éléments, et donc qu'il n'y a pas eu de refonte.
Quoi qu'il en soit, sur la base de l'exemple ci-dessous, pourquoi devrais-je utiliser createDocumentFragment
au lieu de createElement
lors de l'insertion dans le DOM et quelle est la différence entre les deux.
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');