zoukankan      html  css  js  c++  java
  • 前端性能优化之文档片段节点

    前端性能优化之文档片段节点

      我们知道,操作DOM是非常耗时的,并且直接在DOM上操作会使得页面不断的重排和重绘。 

      所以我们可以使用“文档片段节点”,即DocumentFragment。

     

      使用方法: 将将我们希望添加的元素先添加到DocumentFragment上,然后在将它添加到DOM上。

      方法: var fragment = document.createDocumentFragment(); 这样就创建了文档片段节点。

      文档片段节点具有下面的几个属性:

    console.log(fragment.nodeType);//11
    console.log(fragment.nodeValue);//null
    console.log(fragment.nodeName);//'#document-fragment'
    console.log(fragment.parentNode);//null

      

    具体使用:  在添加元素时,我们常常会使用appendChild()添加元素,这会导致不断的重排和重绘。 而使用document.createDocumentFragment()可以不影响DOM树,最后只会导致一次重排,如下所示:

      

    <ul id="list1"></ul>
    <script>
    var list1 = document.getElementById('list1');
    console.time("time");
    var fragment = document.createDocumentFragment();
    for(var i = 0; i < 500000; i++){
        fragment.appendChild(document.createElement('li'));
    }
    list1.appendChild(fragment);
    console.timeEnd('time');
    </script>
    
    <ul id="list"></ul>
    <script>
    var list = document.getElementById('list');
    console.time("time");
    for(var i = 0; i < 500000; i++){
        list.appendChild(document.createElement('li'));
    }
    console.timeEnd('time');
    </script>

    最终输出的时间如下:

    time: 112.912ms
    time: 63.789ms

     这里使用文档节点的时间更长一些,应该是主页面的内容太少了,如果主页面的东西很多,那么使用文档节点应当会省时一些。

    注意: 这里console.time("time"); console.timeEnd("time");  可以打印出两者之间的时间。

  • 相关阅读:
    php7垃圾回收机制
    PHP-FPM
    go main.main之前的准备
    ElementUI MessageBox 弹框
    ElementUI table 样式修改
    ElementUI Dropdown 下拉菜单
    vue+django实现下载文件
    ElementUI 点击展开/隐藏
    vue+django实现websocket连接
    ElementUI 上传文件以及限制
  • 原文地址:https://www.cnblogs.com/zhuzhenwei918/p/6603129.html
Copyright © 2011-2022 走看看