artTemplate是新一代 javascript 模板引擎
特性:性能卓越,执行速度通常是 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;
简洁语法
推荐使用,语法简单实用,利于读写。
{{if admin}}{{include 'admin_content'}}{{each list}}<div>{{$index}}. {{$value.user}}</div>{{/each}}
{{/if}}
输出表达式
对内容编码输出:
{{content}}
不编码输出:
{{#content}}
编码可以防止数据中含有 HTML 字符串,避免引起 XSS 攻击。
条件表达式
{{if admin}}<p>admin</p>
{{else if code > 0}}<p>master</p>
{{else}}<p>error!</p>
{{/if}}
遍历表达式
无论数组或者对象都可以用 each 进行遍历。
{{each list as value index}}<li>{{index}} - {{value.user}}</li>
{{/each}}
亦可以被简写:
{{each list}}<li>{{$index}} - {{$value.user}}</li>
{{/each}}
模板包含表达式
用于嵌入子模板。
{{include 'template_name'}}
子模板默认共享当前数据,亦可以指定数据:
{{include 'template_name' news_list}}
获取更多的文章,欢迎关注微信公众号
















