使用js模板引擎心得
2016-07-05 14:40
399 查看
最近几年随着web开发前后端分工越来越细,同时mvc、mvp模式大行其道,js模板引擎也越来越流行了
js模板引擎很多,我经常用的是artTemplate、jsviews这两个模板引擎,12306用的就是jsviews
artTemplate 特性:
性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试)
支持运行时调试,可精确定位异常模板所在语句(演示)
对 NodeJS Express 友好支持
安全,默认对输出进行转义、在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板
支持include包含模板
可在浏览器端实现按路径加载模板(详情)
支持预编译,可将模板转换成为非常精简的 js 文件
模板语句简洁,无需前缀引用数据,有简洁版本与原生语法版本可选
支持所有流行的浏览器
简单示例:
编写模板
使用一个type="text/html"的script标签存放模板:
<script id="test" type="text/html">
<h1>{{title}}</h1>
<ul>
{{each list as value i}}
<li>索引 {{i + 1}} :{{value}}</li>
{{/each}}
</ul>
</script>
渲染模板
var data = {
title: '标签',
list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']
};
var html = template('test', data);
document.getElementById('content').innerHTML = html;
关于各种模板引擎性能对比可参考:
http://www.cnblogs.com/guohu/p/3870677.html
js模板引擎很多,我经常用的是artTemplate、jsviews这两个模板引擎,12306用的就是jsviews
artTemplate 特性:
性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试)
支持运行时调试,可精确定位异常模板所在语句(演示)
对 NodeJS Express 友好支持
安全,默认对输出进行转义、在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板
支持include包含模板
可在浏览器端实现按路径加载模板(详情)
支持预编译,可将模板转换成为非常精简的 js 文件
模板语句简洁,无需前缀引用数据,有简洁版本与原生语法版本可选
支持所有流行的浏览器
简单示例:
编写模板
使用一个type="text/html"的script标签存放模板:
<script id="test" type="text/html">
<h1>{{title}}</h1>
<ul>
{{each list as value i}}
<li>索引 {{i + 1}} :{{value}}</li>
{{/each}}
</ul>
</script>
渲染模板
var data = {
title: '标签',
list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']
};
var html = template('test', data);
document.getElementById('content').innerHTML = html;
关于各种模板引擎性能对比可参考:
http://www.cnblogs.com/guohu/p/3870677.html
相关文章推荐
- js中delete
- servlet与jsp区别
- LitJson 的使用
- 01. 如何创建一个canvas并画一条线段
- IE与FF脚本兼容性问题
- mislider.js 超酷响应式圆形图片轮播图插件
- js返回上一页效果
- 四个下拉框联动 省市区法院选择 js + ajax
- 最快的Json框架-Jfire-codejson解析
- Jackson 框架,轻易转换JSON
- 初识设计模式之策略模式(javascript描述)
- js笔记
- fastjson解析json时报错 class not has default constructor
- 利用d3.js绘制柱状图demo
- jsp
- js中用参数传递方法名
- js中(function(){})()的用法
- javascript数组的长度length是可变的
- 如何用js动态插入svg?如何在svg中在插入Dom元素
- selenium 和 phantomJS或chrome浏览器抓取渲染网页