artTemplate使用
bower install artTemplate --save
https://github.com/aui/artTemplate
快速上手
模板定义:
<div id="content"></div>
<script
id="test" type="text/html">
{{if isAdmin}}
<h1>{{title}}</h1>
<ul>
{{each list as value i}}
<li>索引 {{i + 1}} :{{value}}</li>
{{/each}}
</ul>
{{/if}}
</script>
function(item,index)
数据绑定
<script src="../dist/template.js"></script>
<script>
var data = {
title: '基本例子',
isAdmin: true,
list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']
};
var html = template('test', data);
document.getElementById('content').innerHTML = html;
</script>
语法说明
1. 版本
有两个版本的模板语法可以选择
简洁语法
推荐使用,语法简单实用,利于读写,使用template.js。
{{if admin}}
{{include 'admin_content'}}
{{each list}}
<div>{{$index}}. {{$value.user}}</div>
{{/each}}
{{/if}}
原生语法
使用template-navative.js
<%if (admin){%>
<%include('admin_content')%>
<%for (var i=0;i<list.length;i++) {%>
<div><%=i%>. <%=list[i].user%></div>
<%}%>
<%}%>
2. 显示属性
<h3> <span class=”{{title}}”></span></h3>
#代表属性不转义,会按照原始串输出,如果是标签会被解析成dom
<h3>{{#title}}</h3>
3. 判断
{{if isAdmin}}
<h1>{{title}}</h1>
{{/if}}
{{if isAdmin}}
<h1>{{title}}</h1>
{{else}}
<div>{{message}}</div>
{{/if}}
{{if type==1}}
<h1>{{title}}</h1>
{{/if}}
4. 循环
{{each list as value i}}
<li>索引 {{i + 1}} :{{value}}</li>
{{/each}}
{{each list}}
<li>索引 {{$index}} :{{$value}}</li>
{{include ‘test’ }}
{{/each}}
{{each data}}
<tr>
<td >{{$value.agent_name}}</td>
<td >{{$value.agent_id}}</td>
<td >{{$value.type}}</td>
<td >
{{each $value.items}}
<span>{{$value}}</span>
{{/each}}
<td>
<tr>
{{/each}}
5. 引入
引入id为list的模板
{{include 'list'}}
模板定义
6. 使用type=“text/html”的script标签
<script id="list" type="text/html">
<ul>
{{each list as value i}}
<li>索引 {{i + 1}} :{{value}}</li>
{{/each}}
</ul>
</script>
7. 使用js的变量存储模板
var source = '<ul>'
+ '{{each list as value i}}'
+ '<li>索引 {{i + 1}} :{{value}}</li>'
+ '{{/each}}'
+ '</ul>';
var source = '\
<ul>\
{{each list as value i}}\
<li>索引 {{i + 1}} :{{value}}</li>\
{{/each}}\
</ul>\
';
方法
注意:各个方法传递的数据必须是具有属性的对象,不能是数组
{data:{}} 或者{data:[]}
8. template(id, data)
根据 id 渲染模板。内部会根据document.getElementById(id)查找模板。
如果没有 data 参数,那么将返回一渲染函数。
<ul id="list"></ul>
<script id="list-temp" type="text/html">
{{each list}}
<li>
<img src="{{$value.img}}" alt="">
<h3>{{$value.title}}</h3>
<p>{{$value.time}}</p>
</li>
{{/each}}
</script>
<script>
var data={
list:[
{img:'1.jpg',title:'javascript',time:'2014-11-01'},
{img:'2.jpg',title:'css3',time:'2015-11-01'},
{img:'3.jpg',title:'html5',time:'2016-11-01'}
]
}
document.querySelector('#list').innerHTML=template('list-temp',data);
</script>
9. template.compile(source)
template.compile()接收模板字符串,会返回一个函数,使用该函数传入数据构建html
<ul id="list"></ul>
<script>
var source='\
{{each list}}\
<li>\
<img src="{{$value.img}}" alt="">\
<h3>{{$value.title}}</h3>\
<p>{{$value.time}}</p>\
</li>\
{{/each}}\
';
var data={
list:[
{img:'1.jpg',title:'javascript',time:'2014-11-01'},
{img:'2.jpg',title:'css3',time:'2015-11-01'},
{img:'3.jpg',title:'html5',time:'2016-11-01'}
]
}
var render = template.compile(source);//返回一个函数
var html = render(data);
//var html= template.compile(source)(data);
document.querySelector('#list').innerHTML=html;
</script>
10. template.helper(name, callback)
添加辅助方法。
<ul id="list"></ul>
<script id="list-temp" type="text/html">
{{each list}}
<li>
<p>{{$value.state | state}}</p>
<h3>{{$value.title}}</h3>
<p>{{$value.remark | subStr:15}}</p>
</li>
{{/each}}
</script>
<script>
template.helper('state',function (value) {
if(value==0){
return '禁用'
}else{
return '启用'
}
})
template.helper('subStr',function (value,num) {
return value.substr(0,num)+'...';
})
</script>
<script>
var data={
list:[
{state:'1',title:'javascript',remark:'artTemplate 是新一代 javascript 模板引擎,它在 v8 中的渲染效率可接近 javascript 性能极限'},
{state:'1',title:'css3',remark:'在 chrome 下渲染效率测试中分别是知名引擎 Mustache 与 micro tmpl 的 25 、 32 倍(性能测试)'},
{state:'0',title:'html5',remark:'另外,artTemplate 的模板还支持使用自动化工具预编译,这一切都在 2KB(Gzip) 中实现'}
]
}
document.querySelector('#list').innerHTML=template('list-temp',data);
</script>
handerbar
https://github.com/wycats/handlebars.js/
这种方式的的缺点是,模板通过字符串拼接,不好维护,适合简单模板。
artTemplate使用的更多相关文章
- 性能卓越的js模板引擎--artTemplate
artTemplate能够将数据与View视图的分离,充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现. 在 chrome 下渲染效率测试中分别是知名引擎 Mu ...
- JavaScript模板引擎artTemplate.js——结语
再次首先感谢模板的作者大神,再次放出github的地址:artTemplate性能卓越的js模板引擎 然后感谢博客园的一位前辈,他写的handlebars.js模板引擎教程,对我提供了很大的帮助,也是 ...
- 【JavaScript】ArtTemplate个人的使用体验。
据说ArtTemplate是腾讯的,感觉这东西真不错,使用方便,用起来很简单,哈哈.腾讯也不完全只是坑爹啊. ArtTemplate 使用是,正常引入js,这个自然不用说.这东西啥时候使用呢?我觉得这 ...
- JS 模板引擎 BaiduTemplate 和 ArtTemplate 对比及应用
最近做项目用了JS模板引擎渲染HTML,JS模板引擎是在去年做项目是了解到的,但一直没有用,只停留在了解层面,直到这次做项目才用到,JS模板引擎用了两个 BaiduTemplate 和 ArtTemp ...
- artTemplate模板引擎学习实战
在我的一篇关于智能搜索框异步加载数据的文章中,有博友给我留言,认为我手写字符串拼接效率过低,容易出错.在经过一段时间的摸索和学习之后,发现现在拼接字符串的方法都不在是自己去书写了,而是使用Javasc ...
- JavaScript模板引擎artTemplate.js——两种方法实现性别的判定
template.helper(name, callback) name:必传,辅助事件的名称. callback:必传,辅助事件的回调函数. return:undefined 所谓的辅助事件,主要用 ...
- JavaScript模板引擎artTemplate.js——如何引入模板引擎?
artTeamplate.js在github上的地址:artTemplate性能卓越的js模板引擎 引入模板引擎,就是引入外部javascript啦,并且artTemplate.js不依赖其他第三方库 ...
- JavaScript模板引擎artTemplate.js——为什么使用模板引擎?
作为一个工作一年的菜鸟,在公司做了几个外包项目,也接触到了不同形式的web开发.其实也没多少,就是javaweb开发和HTML5移动开发,这两者在页面展示的时候的解决方案还是有所不同的. 1.vo+e ...
- artTemplate 自动化编译之tmod
一.背景 前端小白的成长历程,一般都会经历html模板的一些问题,jquery template/artTemplate/yayaTemplate等常见的模板使用,这里就不作介绍了. 先谈谈我们为什么 ...
- artTemplate里一个比不上jQuery tmpl模板的地方就是放一个数组进去它不会自动循环.
artTemplate里一个比不上jQuery tmpl模板的地方就是放一个数组进去它不会自动循环.
随机推荐
- Django SCRF跨站点请求伪造
使用Django发POSTt请求的时候经常会遇到Forbidden的错误,然后直接了当的方法就是去setting里面吧csrf中间件注释掉,其实csrf是django给我们提供的防护措施. CSRF就 ...
- React Native的学习资源网址
react官方文档(英文): https://facebook.github.io/react/docs/getting-started.html react中文社区(内部有视频教程等): htt ...
- python 获取list的下标
print(your_list.index('your_item')) #your_list为列表名称 your_item为需要修该的数据
- 安装好visual studio后,如何添加新的工作负载和组件
重新运行visual studio安装程序,出现添加删除组件的界面,勾选即可.
- Loadrunner 11.00录制App脚本篇(Win10)
参考博文1:https://www.cnblogs.com/mxqh2016/p/6016866.html 参考博文2:https://blog.csdn.net/myohmy2008/article ...
- 20164319 刘蕴哲 Exp1 PC平台逆向破解
[实践内容概述] 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,ge ...
- mumu模拟机安装证书
1. 先设置锁屏密码 2. 证书.crt才可以直接安装..der和.cer的都不可以.
- flask debug 模式开启
debug 模式开启 最近在写python flask 的Waf后台管理界面,想要启用调试模式,发现安装目前网上流行的两种方式均无法在我的Pycharm中打开调试模式. )直接在对象上设置 app.d ...
- WebService CXF知识总结
2018-10-23 <wsdl:service name="Iptv3aBasicService"> 客户端client信息,CXF会生成一个名为Iptv3ABasi ...
- union: redis config
# how to save to disk # warning: how to disable, just comment this config save $second $changes