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使用相关推荐

  1. 腾讯的模板引擎---artTemplate

    主要方法如下5种,在此不详细说artTemplate的方法,主要记录三种使用artTemplate的方法. template(id, data) 根据 id 渲染模板.内部会根据document.ge ...

  2. lodop+art-template实现web端漂亮的小票样式打印

    一. 现状 由于之前采用Lodop打印控件(商业版付费,可以使用免费版 但是会有水印)去打印小票,是一行一行的打印,但是不满足UI给到复杂布局的小票样式,所以得重新考虑如何来实现. 二. 介绍 art ...

  3. WinJS实用开发技巧(2):使用artTemplate打造对话列表

    WinJS中提供了列表控件ListView,但是对于一些有一些逻辑判断的处理不是十分友好,我们可以使用JavaScript中的模版机制来自己生成列表,然后添加到DOM中.今天要讲的是artTempla ...

  4. art-template在项目中的应用

    art-template 是一个简约.超快的模板引擎.它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器. 下面介绍在 ...

  5. artTemplate的使用总结

    原生语法 使用原生语法,需要导入template-native.js文件. 在HTML中定义模板,注意模板的位置,不要放到被渲染区域,防止模板丢失. <script id="main_ ...

  6. artTemplate基本用法

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  7. lodop 小票排版_lodop+art-template实现web端漂亮的小票样式打印

    一. 现状 由于之前采用Lodop打印控件(商业版付费,可以使用免费版 但是会有水印)去打印小票,是一行一行的打印,但是不满足UI给到复杂布局的小票样式,所以得重新考虑如何来实现. 二. 介绍 art ...

  8. node --- 在express中配置使用模板引擎(art-template)

    下载依赖: npm install --save art-template express-art-template 配置: // app.js const express = require(&qu ...

  9. 必须掌握的前端模板引擎之art-template

    常用的模板引擎有tpl.js.baiduTemplate.doT.js.art-template等等: 我所理解的模板引擎就是把js数据传到html中展示出来: art-template 是一个简约. ...

最新文章

  1. Extjs4 常用布局总结
  2. GPT-3回答问题不靠谱?OpenAI找来人类“调教师”,终于给教明白了
  3. frameset和frame
  4. java signal handler_JAVA优雅停机的实现
  5. Android开发之APN网络切换
  6. 拉勾发布互联网社畜输入法报告:市场人每日打字7300个
  7. Kaggle 数据清洗挑战 Day 3 - 快速解析日期(date)数据
  8. linux下调整交换分区的大小
  9. 教你轻松计算AOE网关键路径(转)
  10. 6.4 tensorflow2实现FNN推荐系统——Python实战(第二篇)
  11. 计算机组成原理:计算机内负数二进制求得方式
  12. linux chmod详解
  13. python平方数_python数字平方
  14. 计算机常用的存储设备外存有哪些,计算机中常用的存储设备有哪些?
  15. Android 10去除电池图标以及设置
  16. AQS队列到底是什么?
  17. 在window server虚拟机上搭建RAID1与RAID5阵列
  18. 【Python】根据汽车品牌列表及链接地址分别获取对应子品牌及车系数据列表
  19. 杰理之MIC 省电 容方案 微信语音 或通话 时前面 几秒钟有 哒哒声【篇】
  20. react-native : 开发工具转帖记录

热门文章

  1. 初次使用VS附加到进程功能
  2. MySQL 空间数据库支持入门学习
  3. Fedora学习总结
  4. matlab如何读取未知行数,带头文件和字段名的txt文件
  5. 获取某个view的高度或者宽度
  6. 理解oauth2.0【转载】
  7. linux内核学习之三:linux中的32位与64位
  8. [译] 第五天: GruntJS - 为你解决繁琐重复的任务
  9. 用forif循环测量minst0-6的特征迭代次数曲线
  10. 9. 混合模型和EM(2)