`

优化createDocument 为 createDocumentFragment

阅读更多

createDocumentFragment作用?

    createDocumentFragment()创建一个文档碎片,把所有的新结点附加在其上,然后把文档碎片的内容一次性添加到document中,这也就只需要一次页面刷新就可。

他支持以下DOM2方法: 
a, cloneNode, hasAttributes, hasChildNodes, insertBefore, normalize, removeChild, replaceChild. 
也支持以下DOM2属性: 
attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling, textContent.

下面是2段测试程序:

 

var d1 = new Date();

//创建十个段落,常规的方式

for(var i = 0 ; i < 1000; i ++) {

    var p = document_createElement_x_x_x("p");

    var oTxt = document_createTextNode("段落" + i);

    p.a(oTxt);

    document.body.a(p);

}

var d2 = new Date();

document.write("第一次创建需要的时间:"+(d2.getTime()-d1.getTime()));

 

 

//使用了createDocumentFragment()的程序

var d3 = new Date();

var pFragment = document_createDocumentFragment();

for(var i = 0 ; i < 1000; i ++) {

    var p = document_createElement_x_x_x("p");

    var oTxt = document_createTextNode("段落" + i);

    p.a(oTxt);

    pFragment.a(p);

}

document.body.a(pFragment);

var d4 = new Date();

document.write("第2次创建需要的时间:"+(d4.getTime()-d3.getTime()));

 

createDocumentFragment()就是为了节约使用DOM,每次JavaScript对DOM的操作都会改变页面的变现,并重新刷新整个页面,从而消耗了大量的时间。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中。

 

分享到:
评论

相关推荐

    JavaScript性能优化 创建文档碎片(document.createDocumentFragment)

    ### JavaScript性能优化之创建文档碎片(document.createDocumentFragment) 在探讨`document.createDocumentFragment()`方法之前,我们首先需要理解浏览器在处理DOM(文档对象模型)节点插入时的基本行为。DOM是HTML...

    浅析document.createDocumentFragment()与js效率

    使用document.createDocumentFragment()方法可以创建一个DocumentFragment对象。创建后,你可以将多个元素添加到该对象中。一旦所有的操作都完成,你可以将DocumentFragment一次性地附加到DOM树上。与逐个添加节点到...

    关于javascript document.createDocumentFragment()

    `document.createDocumentFragment()`是JavaScript中的一个非常有用的API,它允许开发者在不实际修改DOM树的情况下构建和操作一组节点。这个方法返回一个无父节点的`DocumentFragment`对象,可以被视为一个临时的、...

    JavaScript执行效率优化及内存管理优化.docx

    var frag = document.createDocumentFragment(); for (var i = 0; i ; i++) { var el = document.createElement('p'); el.innerHTML = i; frag.appendChild(el); } document.body.appendChild(frag); ``` 1.1.2 ...

    一些高性能的Javascript代码.doc

    var frag = document.createDocumentFragment(); for (var i = 0; i ; i++) { var el = document.createElement('p'); el.innerHTML = i; frag.appendChild(el); } document.body.appendChild(frag); ``` 2...

    createElement与createDocumentFragment的点点区别小结

    网上可以搜到的大部分都是说使用createDocumentFragment主要是因为避免因createElement多次添加到document.body引起的效率问题,比如: 代码如下: var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”...

    JS提高优化性能完全秘籍.pdf

    var frag = document.createDocumentFragment(); for (var i = 0; i ; i++) { var el = document.createElement('p'); el.innerHTML = i; frag.appendChild(el); } document.body.appendChild(frag); ``` 通过...

    javascript 异步的innerHTML使用分析

    代码如下: function asyncInnerHTML(HTML, callback) { var temp = document.createElement(‘div’), frag = document.createDocumentFragment(); temp[removed] = HTML;//要加入的内容先放到这里。 (function(){ ...

    document 文挡对象详解

    - `document.createDocumentFragment()`:创建一个不附加到文档的文档片段,用于存储和操作元素集合。 - `innerHTML`:获取或设置元素及其所有子元素的HTML。 - `outerHTML`:获取或设置元素的HTML,包括其开始...

    financial-object.create

    练习您的工作是创建一个代表财务顾问的对象,并具有以下属性和方法。 公司(可枚举,可写,财产)专业(可枚举,可写,财产)名称... 遍历顾问的投资组合,并使用document.createDocumentFragment和document.create

    dom-lite:一个小的DOM实现,其中实现了文档中的大多数DOM属性和方法

    createDocumentFragment ( ) ; var text1 = document . createTextNode ( "hello" ) ; var text2 = document . createTextNode ( " world" ) ; fragment . appendChild ( text1 ) ; fragment . appendChild

    blocks:将大的阻塞循环分解为较小的块,以提高响应能力

    将较大的阻塞循环分解为较小的块,这些块会阻塞一段指定的时间 创建此表的原因是由于呈现了一些较大的表,这些表阻塞了UI。 块使您可以指定自己愿意的时间,然后再回到事件循环以允许其他进程运行。 // Create a ...

    初识javascript 文档碎片

    后来是一技术群问到以下一段代码: 代码... var df = document.createDocumentFragment(); while (d.firstChild) df.appendChild(d.firstChild); return df; } 大概的原理都明白,比较困惑的是为什么要用 document.cre

    Vue中fragment.js使用方法小结

    `createDocumentFragment`是一个非常实用的工具,可以帮助我们优化性能。本文将深入探讨Vue中`createDocumentFragment`的使用方法。 首先,让我们了解为什么直接通过循环插入大量元素是低效的。假设我们需要在一个...

Global site tag (gtag.js) - Google Analytics