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
http://handlebarsjs.com/
https://github.com/wycats/handlebars.js/
这种方式的的缺点是,模板通过字符串拼接,不好维护,适合简单模板。
转载于:https://www.cnblogs.com/xiangqianjin/p/6600674.html
artTemplate使用相关推荐
- 腾讯的模板引擎---artTemplate
主要方法如下5种,在此不详细说artTemplate的方法,主要记录三种使用artTemplate的方法. template(id, data) 根据 id 渲染模板.内部会根据document.ge ...
- lodop+art-template实现web端漂亮的小票样式打印
一. 现状 由于之前采用Lodop打印控件(商业版付费,可以使用免费版 但是会有水印)去打印小票,是一行一行的打印,但是不满足UI给到复杂布局的小票样式,所以得重新考虑如何来实现. 二. 介绍 art ...
- WinJS实用开发技巧(2):使用artTemplate打造对话列表
WinJS中提供了列表控件ListView,但是对于一些有一些逻辑判断的处理不是十分友好,我们可以使用JavaScript中的模版机制来自己生成列表,然后添加到DOM中.今天要讲的是artTempla ...
- art-template在项目中的应用
art-template 是一个简约.超快的模板引擎.它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器. 下面介绍在 ...
- artTemplate的使用总结
原生语法 使用原生语法,需要导入template-native.js文件. 在HTML中定义模板,注意模板的位置,不要放到被渲染区域,防止模板丢失. <script id="main_ ...
- artTemplate基本用法
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- lodop 小票排版_lodop+art-template实现web端漂亮的小票样式打印
一. 现状 由于之前采用Lodop打印控件(商业版付费,可以使用免费版 但是会有水印)去打印小票,是一行一行的打印,但是不满足UI给到复杂布局的小票样式,所以得重新考虑如何来实现. 二. 介绍 art ...
- node --- 在express中配置使用模板引擎(art-template)
下载依赖: npm install --save art-template express-art-template 配置: // app.js const express = require(&qu ...
- 必须掌握的前端模板引擎之art-template
常用的模板引擎有tpl.js.baiduTemplate.doT.js.art-template等等: 我所理解的模板引擎就是把js数据传到html中展示出来: art-template 是一个简约. ...
最新文章
- Extjs4 常用布局总结
- GPT-3回答问题不靠谱?OpenAI找来人类“调教师”,终于给教明白了
- frameset和frame
- java signal handler_JAVA优雅停机的实现
- Android开发之APN网络切换
- 拉勾发布互联网社畜输入法报告:市场人每日打字7300个
- Kaggle 数据清洗挑战 Day 3 - 快速解析日期(date)数据
- linux下调整交换分区的大小
- 教你轻松计算AOE网关键路径(转)
- 6.4 tensorflow2实现FNN推荐系统——Python实战(第二篇)
- 计算机组成原理:计算机内负数二进制求得方式
- linux chmod详解
- python平方数_python数字平方
- 计算机常用的存储设备外存有哪些,计算机中常用的存储设备有哪些?
- Android 10去除电池图标以及设置
- AQS队列到底是什么?
- 在window server虚拟机上搭建RAID1与RAID5阵列
- 【Python】根据汽车品牌列表及链接地址分别获取对应子品牌及车系数据列表
- 杰理之MIC 省电 容方案 微信语音 或通话 时前面 几秒钟有 哒哒声【篇】
- react-native : 开发工具转帖记录