artTemplate是騰訊公司的js模板引擎,性能毅否、語法以及錯誤處理非常的優(yōu)秀刑桑,它采用預編譯方式讓性能有了質(zhì)的飛躍,并且充分利用 javascript 引擎特性譬淳,使得其性能無論在前端還是后端都有極其出色的表現(xiàn)档址。在 chrome 下渲染效率測試中分別是知名引擎 Mustache 與 micro tmpl 的 25 、 32 倍瘦赫。
速度對比
安裝與使用
引用簡潔語法的引擎版本辰晕,例如:
<script src="dist/template.js"></script>
表達式
簡寫表達式由{{ 與 }}構(gòu)成
對內(nèi)容編碼輸出:
編碼輸出:
{{content}}
不編碼輸出:
{{#content}}
編碼可以防止數(shù)據(jù)中含有 HTML 字符串,避免引起 XSS 攻擊确虱。
條件表達式
{{if admin}}
admin
{{else if code > 0}}
master
{{else}}
error
{{/if}}
遍歷表達式
無論數(shù)組或者對象都可以用 each 進行遍歷含友。
{{each list as value index}}
<li>{{index}} - {{value.user}}</li>
{{/each}}
亦可以被簡寫:
{{each list}}
<li>{{$index}} - {{$value.user}}</li>
{{/each}}
模板包含表達式
用于嵌入子模板。
{{include 'template_name'}}
子模板默認共享當前數(shù)據(jù),亦可以指定數(shù)據(jù):
{{include 'template_name' news_list}}
輔助方法
使用
template.helper(name, callback)
注冊公用輔助方法:
template.helper('dateFormat', function (date, format) { // .. return value;});
模板中使用的方式:
{{time | dateFormat:'yyyy-MM-dd hh:mm:ss'}}
支持傳入?yún)?shù)與嵌套使用:
{{time | say:'cd' | ubb | link}}
演示例子
基本例子
不轉(zhuǎn)義HTML
在javascript中存放模板
嵌入子模板(include)
訪問外部公用函數(shù)(輔助方法)