性能卓越的js模板引擎--artTemplate
artTemplate能够将数据与View视图的分离,充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。
在 chrome 下渲染效率测试中分别是知名引擎 Mustache 与 micro tmpl 的 25 、 32 倍。

一、简洁编写模板
1.(采用script标签并带有属性id和type="text/html")
1 <script id="test" type="text/html"> 2 {{if isAdmin}} 3 4 <h1>{{author}}</h1> 5 <ul> 6 {{each list as value i}} 7 <li>{{i+1}}:{{value}}</li> 8 {{/each}} 9 </ul> 10 11 {{/if}} 12 </script>
2.出色的渲染模板
      template(id, data) 根据 id 渲染模板。内部会根据document.getElementById(id)查找模板,如果没有 data 参数,那么将返回一渲染函数。
var data = { author: '宫崎骏', isAdmin: true, list: ['千与千寻', '哈尔的移动城堡', '幽灵公主', '风之谷', '龙猫'] }; var html = template('test', data); document.getElementById('content').innerHTML = html;
3.template.compile([id], source)将返回一个渲染函数。其中 id 参数是可选的,如果使用了 id 参数,可以使用template.render(id, data)渲染模板。
1 var source = 2 '<ul>' 3 + '<% for (var i = 0; i < list.length; i ++) { %>' 4 + '<li>索引 <%= i + 1 %> :<%= list[i] %></li>' 5 + '<% } %>' 6 + '</ul>'; 7 8 var data = { 9 list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'] 10 }; 11 12 var render = template.compile(source); 13 var html = render(data); 14 document.getElementById('content').innerHTML = html;
二、简洁的模板语法
1.简洁语法(采用"{{ }}",推荐使用)
{{each resultList as result index}} <tr data-id = "{{result.userId}}"> <td>{{index}}</td> <td>{{if result.userType == 0 }}普通用户{{else}}管理员{{/if}}</td> <td>{{result.userName}}</td> <td>{{if result.status == 0 }}停用{{else}}启用{{/if}}</td> </tr> {{/each}}
2.原生语法(采用"<%= %>") 类似于JSP语法写法
<script id="test" type="text/html"> <%if {%> <%include('admin_content')%> <%for (var i=0;i<list.length;i++) {%> <div><%=i%>.<%=list[i].user%></div> <%}%> <%}%> </script>
3.template.helper(name, callback) 将返回一个渲染结果。
1 {{each collectionList as item index}} 2 <p><span name="startTime">{{item.startTime | dateFormat: 'yyyy-MM-dd'}}</span> 3 {{/each}}
1 template.helper("dateFormat", function(date, fmt) { 2 if (!date) return ''; 3 4 date = date.split('-').join('/'); 5 date = new Date(date); 6 var o = { 7 "M+": date.getMonth() + 1, //月份 8 "d+": date.getDate(), //日 9 "h+": date.getHours(), //小时 10 "m+": date.getMinutes(), //分 11 "s+": date.getSeconds(), //秒 12 "q+": Math.floor((date.getMonth() + 3) / 3), //季度 13 "S": date.getMilliseconds() //毫秒 14 }; 15 if (/(y+)/.test(fmt)) 16 fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); 17 for (var k in o) 18 if (new RegExp("(" + k + ")").test(fmt)) { 19 fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 20 } 21 return fmt; 22 });
资料参考
https://aui.github.io/art-template/zh-cn/index.html
https://cdc.tencent.com/2012/06/15/

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号