zoukankan      html  css  js  c++  java
  • ejs和swig对比的问题之一

    本来想测试下两者在nodejs中得执行速度,设置了一个测试数据,如下

    var testData = {
        title:'测试标题',
        description: '<p>这是一个描述,里面用很多标签,有<h1>h1标签</h1><h2>h2标签</h2><h3>h3标签</h3><h4>h4标签</h4><h5>h5标签</h5><p>但是不会解析',
        datas : createData()
    };
    function createData(){
        var array = new Array();
        var tmp = '{name:"我是data{i}", age: {i}, comp: "一个大公司}';
        for(var i = 0; i < 1000; i++){
            array[i] = tmp.replace(/{i}/g, i);
        }
        return array;
    }
    module.exports = testData;

    在swig中可以正常解析,但是在ejs中却一直报错,后来才发现问题:ejs中不会把字符串进行转换
    在swig中,数组中得字符串会被解析为对象,可以直接使用,在ejs中却无法直接解析, 所以对上面的代码进行修改,如下:

    var testData = {
        title:'测试标题',
        description: '<p>这是一个描述,里面用很多标签,有<h1>h1标签</h1><h2>h2标签</h2><h3>h3标签</h3><h4>h4标签</h4><h5>h5标签</h5><p>但是不会解析',
        datas : createData()
    };
    function createData(){
        var array = new Array();
        for(var i = 0; i < 1000; i++){
            array[i] = {name: "我是data" + i, age: i, comp: '一个大公司'};
        }
        return array;
    }
    
    module.exports = testData;

    swig的模板页面testswig.html:

    <!doctype html>
    <html>
    <head>
      <meta charset="utf-8">
      <script type="text/javascript">
        var star = new Date().getTime();
      </script>
      <title>{{title}}</title>
    </head>
    <body>
        <h1 id="time"></h1>
    <div>
        <h1>描述</h1>
        {{description}}
    </div>
    <div>
        <h2>一个大列表:</h2>
        <ul>
            {% for item in datas -%}
                <li>姓名:{{item.name}}  年龄:{{item.age}}  公司:{{item.comp}}</li>
            {%- endfor%}
        </ul>
    </div>
    <script type="text/javascript">
        var end = new Date().getTime();
        document.getElementById('time').innerHTML = end - star;
    </script>
    
    </body>
    </html>

    ejs的模板页面testejs.ejs

    <!doctype html>
    <html>
    <head>
      <meta charset="utf-8">
      <script type="text/javascript">
        var star = new Date().getTime();
      </script>
      <title><%= title %></title>
    </head>
    <body>
        <h1 id="time"></h1>
    <div>
        <h1>描述</h1>
        <%= description %>
    </div>
    <div>
        <h2>一个大列表:</h2>
        <ul>
            <% datas.forEach(function(item) { %>
                <li>姓名:<%= item.name %>  年龄:<%= item.age %>  公司:<%= item.comp %></li>
            <% }); %>
    
        </ul>
    </div>
    <script type="text/javascript">
        var end = new Date().getTime();
        document.getElementById('time').innerHTML = end - star;
    </script>
    
    </body>
    </html>

    测试结果为:

    • 1000条数据时,用时都为2ms
    • 10000条数据时,swig用时在180ms左右,ejs首次加载时间为470ms,之后加载时间为380毫秒左右摆动。


    初步测试swig胜!


    这种测试有网络时间和页面加载时间,并不全是模板渲染时间,所以并不精确,但是在其他变量一定的情况下,可以算作是相对精确,差值是正确的。

    原文地址:ejs和swig对比的问题之一

  • 相关阅读:
    PriorityQueue详解
    Queue介绍
    Dubbo面试踩坑
    Java中Integer和ThreadLocal
    Java中Deque特性及API
    由ubuntu装好想到的
    双系统试水上岸
    终于意识到BIM确实火了
    读阿里机器学习平台的一些总结
    继续ubuntu和遇到的easybcd的坑
  • 原文地址:https://www.cnblogs.com/mnight/p/4228816.html
Copyright © 2011-2022 走看看