createDocumentFragment 与字符串拼接渲染dom性能比较

一般如果我们有多个dom原生需要通过js添加到html中,如果一个dom添加一次,会造成页面多次重绘。所以我通常是两种解决方法。

  1. 通过拼接好字符串后添加到html中

  2. 通过 创建DocumentFragment节点接受dom元素,最后添加到html中https://www.jianshu.com/p/f02542f1f828

但是两种方式的性能比较,哪个更好呢?今天在同一浏览器,同一工作条件下,相差几秒钟试验了一下;

<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>比较createDocumentFragment与字符串拼接速度</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no">
    <link rel="apple-touch-icon-precomposed" href="https://res.zhen.com/mzhenpin/statics/image/apple_logo.png" />
    <style>
        html,
        body {
            padding: 0;
            margin: 0;
        }
        
        img {
            width: 100%;
        }
    </style>
</head>

<body>

</body>
<script>
    var len = 10000;
    init()

    // DocumentFragment 方式
    function init() {
        console.time()
        var fragment = document.createDocumentFragment();
        for (var i = 0; i < len; i++) {
            var img = new Image();
            img.src = "./images/toy117.jpg";
            fragment.appendChild(img)
        }
        document.body.innerHTML = fragment;
        console.timeEnd()
    }

    // 字符串方式
    function init2() {
        console.time()
        var str = ''
        for (var i = 0; i < len; i++) {
            str += '<img src="./images/toy117.jpg">';
        }  

        document.body.innerHTML = str;
        console.timeEnd()
    }
</script>

</html>
  • 都刷新页面10次,比较结果如下
    | DocumentFragment | 字符串|
    | ------------- | ------------- |
    | 102| 108 |
    | 109| 92|
    | 105 | 96|
    | 114| 96 |
    | 109 | 86 |
    | 105| 89|
    | 106 | 101 |
    | 99 | 93 |
    | 105 | 91|
    | 97 | 88|

  • 从结果可以看出通字符串拼接渲染dom性能更高

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,859评论 1 45
  •   DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口)。   DOM 描绘...
    霜天晓阅读 3,726评论 0 7
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,214评论 0 21
  •   尽管 DOM 作为 API 已经非常完善了,但为了实现更过的功能,仍然会有一些标准或专有的扩展。   2008...
    霜天晓阅读 455评论 0 0
  • 关于前端性能优化问题详解 出处:http://segmentfault.com/blogs 前端性能优化指南 AJ...
    bennnnn阅读 1,627评论 2 4