本来想测试下两者在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对比的问题之一

ejs和swig对比的问题之一的更多相关文章

  1. ejs和swig对比问题之二

    上一次用浏览器里面简单的进行了测试,得到的数据是swig是ejs的速度的一倍左右,这次在控制台进行测试,能够得到比较精确的数据,并加入了dot一块儿进行测试. 测试数据是一百万条记录 创建测试数据cr ...

  2. What is NodeJS(学习过程)

    为什么要学习node.首先是听说了这个和前后端分离有很大的关系.node作为一个基础的技术,需要提前学习.学习node,不打算直接先跟着视频去学习老师们的课程.因为想自己找到一种适合自己的学习方法.之 ...

  3. hexo —— 简单、快速、强大的Node.js静态博客框架

    hexo是一款基于Node.js的静态博客框架.目前在GitHub上已有1375 star 和 219 fork. 特性 风一般的速度 Hexo基于Node.js,支持多进程,几百篇文章也可以秒生成. ...

  4. 使用Hexo & Github,搭建属于自己的博客

    经过在网上各种找资料,踩过各种坑,终于搭建好了hexo,直接与gitbub一起使用,搭建起自己的免费的博客. 关于Hexo Hexo是一款基于Node.js的静态博客框架. Hexo特性 风一般的速度 ...

  5. 如何用 windows+github搭建一个优美的hexo博客

    1.Hexo简单介绍 Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页. 风一般的速度Hexo基于Nod ...

  6. node.js—express+ejs、express+swig、

    安装:npm install -g express-generator 普通express 网站 创建:express testWeb 安装依赖:npm install 修改app.js文件并运行 找 ...

  7. swig模板引擎和ejs模板引擎

    swig模板引擎的基本用法: 1. 变量 {{ name }}  //name名前后必须要加空格,不加就会报错 2. 属性 {{ student.name }} 3. 模板继承 swig使用exten ...

  8. 用nodejs,express,ejs,mongo,extjs实现了简单了网站后台管理系统

    源代码下载地址:http://download.csdn.net/detail/guoyongrong/6498611 这个系统其实是出于学习nodejs的目的而改写的系统. 原来的系统前端使用了ex ...

  9. Nodejs in Visual Studio Code 04.Swig模版

    1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...

随机推荐

  1. Xml配置文件属性的说明

    Xml配置文件属性的说明: <bean id="TheAction" ⑴ class="net.xiaxin.spring.qs.UpperAction" ...

  2. Appium robotframework-appium (ios 客户端测试)环境搭建

    一. 简介 1.1摘要 本人测试新人,最近在搞ios客户端的自动化,准备采用robotframework-appium来实现自动化测试,一边学习一边总结,此安装说明文档是基于mac系统10.11版本, ...

  3. HDU 1880 简单Hash

    题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=1880] 中文题面,题意很简单: 题解: 把每个 魔咒 和 对应的功能分别Hash,然后分别映射到ma ...

  4. 【BZOJ 3442】 3442: 学习小组 (最大费用流)

    3442: 学习小组 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 403  Solved: 193 Description [背景] 坑校准备鼓励学生 ...

  5. 「WC2010」重建计划(长链剖分/点分治)

    「WC2010」重建计划(长链剖分/点分治) 题目描述 有一棵大小为 \(n\) 的树,给定 \(L, R\) ,要求找到一条长度在 \([L, R]\) 的路径,并且路径上边权的平均值最大 \(1 ...

  6. Service里面启动Activity和Alertdialog

    启动Activity源码:(记得要加上Intent.FLAG_ACTIVITY_NEW_TASK) Intent intent = new Intent(); intent.setFlags(Inte ...

  7. hdu 1711

    读入优化有3s多. #include <cstdio> #include <cctype> #define maxn 1000010 #define maxm 10010 in ...

  8. 3524: [Poi2014]Couriers -- 主席树

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MB Description 给一个长度为n的序列a.1≤a[i]≤n.m组 ...

  9. C# -- 学习笔记之基础篇

    由于要做一个系统,需要用到搜索引擎开发的很多知识点.对于开发语言的选择,我一般不是擅长什么才选择什么的,而是通过对比之后,考虑开发时间和难易程度来选择.尽管现在的开发经验还不足,也只能凭借自己弱弱的判 ...

  10. python开发_re和counter

    python中re和counter的结合,可以实现以下的功能: 1.获取字符串或者文件中的单词组 2.对单词组进行统计 下面是我做的demo 运行效果: ======================= ...