art-template是一个简约、超快的模板引擎。
它采用作用域预声明的技术来优化模板渲染速度,从而获得接近JavaScript极限的运行性能,并且同时支持nodejs和浏览器。
标准语法:
{{if user}}
<h2> {{user.name}} </h2>
{{/if}}
原始语法:
<% if (user)>
{%>
<h2><%= user.name %></h2>
<%}
<%>
渲染模板:
var template = require('art-template');
var html = template(__dirname +'/tpl-user.art',{
user:{
name:'aui'
}
});
核心方法:
// 基于模板名渲染模板
template(filename, data);
// 将模板源代码编译成函数
template.compile(source, options);
// 将模板源代码编译成函数并立刻执行
template.render(source, data, options);
语法:
输出
标准语法
{{value}}
{{data.key}}
{{data['key']}}
{{a?b:c}}
{{a+b}}
原文输出
标准语法
{{@ value }}
原文输出语句不会对HTML内容进行转义处理,可能存在安全风险,请谨慎使用。
条件
{{ if value }} ... {{/if}}
{{if v1}} ... {{else if v2}} ... {{/if}}
循环
{{each target}}
{{$index}} {{$value}}
{{/each}}
变量
{{set temp = data.sub.content}}
字模板
{{ include './header.art' }}
{{ include './header.art' data}}
- data 数默认值为 $data;标准语法不支持声明 object 与 array,只支持引用变量,而原始语法不受限制。
- art-template 内建 HTML 压缩器,请避免书写 HTML 非正常闭合的子模板,否则开启压缩后标签可能会被意外“优化。
过滤器
template.defaults.imports.dateFormat = function(date, format){/*[code..]*/};
template.defaults.imports.timestamp = function(value){return value * 1000};
{{date | timestamp | dateFormat 'yyyy-MM-dd hh:mm:ss'}}
内置变量清单
- $data 传入模板的数据
- $imports 外部导入的变量以及全局变量
- print 字符串输出函数
- include 子模板载入函数
- extend 模板继承模板导入函数
- block 模板块声明函数