arttemplate入门
arttemplate是JavaScript模板引擎,使用时需引入其对应的js文件:
- arttemplate.js 简洁语法版
- arttemplate-native.js 原生语法版
arttemplate有两种语法格式(简洁语法和原生语法),本文记录简介语法的使用。
简单应用
准备工作:下载template.js
使用流程:type=”text/html”的script标签存放模板,js中准备数据并渲染
<!-- 引入简洁语法版js文件-->
<script type="text/javascript" src="arttemplate.js"></script><div id="content"></div>
<!-- 编写模板,此模板放在html页面中,模板也可放在js文件中 -->
<script id="contentTemplate" type="text/html"><h1>{{title}}</h1> <ul> {{each list}}<li>索引 {{$<span class="hljs-variable">index</span> + 1}}</span><span class="xml"><span class="javascript"> :</span></span><span class="hljs-expression">{{$value}}</li> {{/each}}</ul> </script>
<!-- 渲染模板 -->
<script type="text/javascript">var data = {// 准备模板中涉及的数据title: '标签',list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']};var html = template('contentTemplate', data);// 调用template()方法将模板与数据结合进行渲染document.getElementById('content').innerHTML = html;// 将渲染结果写入div
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
js文件提供的方法
template(id,data)
- 返回渲染结果
- 内部根据document.getElementById(id)查找模板
- 如果没有data参数,返回一个渲染函数
【注】
由于arttemplate的预编译功能,可突破浏览器限制,让前端模板拥有后端模板一样的同步“文件”加载能力:
一、按文件与目录组织模板
template('tpl/home/main', data);
- 1
二、模板支持引入子模板
{{include '../public/header'}}
- 1
template.compile(source,options)
返回一个渲染函数,主要用于模板写在js中
<div id="content"></div>
<!-- 在javascript中存放模板并渲染 -->
<script type="text/javascript">var source = '<ul>' + '{{each list as value i}}' + '<li>索引 {{i + 1}} :{{value}}</li>'+ '{{/each}}'+ '</ul>';var render = template.compile(source); // 返回一个渲染函数var data = {list : ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']}var html = render(data);document.getElementById('content').innerHTML = html;
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
template.render(source,options)
返回渲染结果
template.helper(name,callback)
添加辅助方法,即在模板中访问外部公用函数
<div id="content"></div>
<script id="testTemplate" type="text/html">{{time | dateFormat:'yyyy年 MM月 dd日 hh:mm:ss'}}
</script><script type="text/javascript">/** * 对日期进行格式化, * @param date 要格式化的日期 * @param format 进行格式化的模式字符串 * @return String */template.helper('dateFormat', function (date, format) {date = new Date(date);var map = {"M": date.getMonth() + 1, //月份 "d": date.getDate(), //日 "h": date.getHours(), //小时 "m": date.getMinutes(), //分 "s": date.getSeconds(), //秒 "q": Math.floor((date.getMonth() + 3) / 3), //季度 "S": date.getMilliseconds() //毫秒 };format = format.replace(/([yMdhmsqS])+/g, function(all, t){var v = map[t];if(v !== undefined){if(all.length > 1){v = '0' + v;v = v.substr(v.length-2);}return v;}else if(t === 'y'){return (date.getFullYear() + '').substr(4 - all.length);}return all;});return format;});var data = {time: (new Date).toString(),};var html = template('testTemplate', data);document.getElementById('content').innerHTML = html;
</script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
template.config(name,value)
更改引擎的默认配置
模板编写语法
输出表达式
{{content}} <!--内容编码输出,编码可以防止数据中含有 HTML 字符串--><span style="color:#F00">hello world!</span>
{{#content}} <!--内容不编码输出--> hello word!
- 1
- 2
var data = {content: '<span style="color:#F00">hello world!</span>'
};
- 1
- 2
- 3
条件表达式
{{if admin}}<p>admin</p>
{{else if code > 0}}<p>master</p>
{{else}}<p>error!</p>
{{/if}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
var data = {admin:true
}
- 1
- 2
- 3
遍历表达式
无论数组或者对象都可以用 each 进行遍历
{{each list as value index}}<li>{{index}} - {{value.user}}</li>
{{/each}}
<!--或-->
{{each list}}<li>{{$<span class="hljs-variable">index</span>}}</span><span class="xml"> - </span><span class="hljs-expression">{{$value.user}}</li>
{{/each}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
嵌入子模板
{{include 'template_name'}} <!--子模板共享当前数据-->
{{include 'template_name' news_list}} <!--子模板指定新数据-->
- 1
- 2
<link rel="stylesheet" href="http://csdnimg.cn/release/phoenix/production/markdown_views-0bc64ada25.css"></div>
arttemplate入门相关推荐
- art-template入门(九)之API
API template(filename, content) 根据模板名渲染模板. 参数: {string} filename {Object,string} content 返回值: 如果 con ...
- art-template入门(八)之选项
转载自 art-template选项 template.defaults // 模板名 filename: null,// 模板语法规则列表 rules: [nativeRule, artRule] ...
- art-template入门(七)之压缩页面
转载自 art-template压缩页面 压缩页面 template.defaults.minimize art-template 内建的压缩器可以压缩 HTML.JS.CSS,它在编译阶段运行,因 ...
- art-template入门(六)之解析规则
转载自 art-template解析规则 解析规则 template.defaults.rules art-template 可以自定义模板解析规则,默认配置了原始语法与标准语法. 修改界定符 // ...
- art-template入门(五)之模板变量
转载自 art-template模板变量 模板变量 template.defaults.imports 模板通过 $imports 可以访问到模板外部的全局变量与导入的变量. 导入变量 templa ...
- art-template入门(四)之调试
转载自 art-template调试 template.defaults.debug art-template 内建调试器,能够捕获到语法与运行错误,并且支持自定义的语法.在 NodeJS 中调试模 ...
- art-template入门(三)之语法
转载自 art-template语法 语法 art-template 支持标准语法与原始语法.标准语法可以让模板易读写,而原始语法拥有强大的逻辑表达能力. 标准语法支持基本模板语法以及基本 Java ...
- art-template 入门(二)之安装
转载自 art-template 安装 安装 Npm npm install art-template --save 在浏览器中实时编译 下载:lib/template-web.js(gzip: 6 ...
- art-template入门(一)之介绍
转载自 art-template介绍 介绍 art-template 是一个简约.超快的模板引擎. 它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并 ...
最新文章
- BERT+CRF的损失函数的研究
- Transformer升级之路:二维位置的旋转式位置编码
- js判断url链接是否可访问(服务可连接,可用)
- springboot ServletContextListener接口
- 【渝粤教育】国家开放大学2018年春季 8618-22T燃气行业规范 参考试题
- 1t硬盘怎么分区最好_新买的固态硬盘该不该分区?分区后性能如何?真是后悔知道晚了!...
- 力软使用技巧-前端(index)
- 18650锂电池保护板接线图_锂电池保护板的原理介绍保护板的构成和主要作用
- 如何用python做动画_如何使用python制作简单的动画?
- 【操作系统】HRT任务和SRT任务(实时系统中的硬实时系统和软实时系统)
- Kent Beck : 领导的敏捷潮
- 男人就要对自己狠一点
- gdal调用capi处理乱码问题(c#)
- PHP 实现word在线预览
- Deepin java开发环境的搭建jdk8,tomcat9,maven3.3.9,nodejs,vue3+
- 当MySQL想恋爱,java和navicate抢着做媒婆 ------ java连接MySQL数据库 navicat for MySQL 连接
- 苹果手用计算机解锁手机密码,苹果手机密码忘了怎么解锁(解决方法大全)
- 中荣股份上市首日破发:市值相对蒸发约3亿元,黄焕然为实控人
- Android Studio使用Mob获取手机验证码
- 可怜的80后——最具牺牲精神的一代
热门文章
- JS实现网站的简体字与繁体字转换
- python数据处理——取dataframe的一列或一行
- python bitwise operator 位运算
- Xcode The 'Apple Push Notification' feature is only available to users enrolled in Apple Develo.
- c# Thread 线程详细讲解
- 宋朝名画“虎戴VR”,在外网火了
- NLP标注工具Brat的简单使用
- 【五六七人口普查】我国省市两级各行业门类人口及三次产业人口比重
- 果粉黑诞生记——兼谈文件夹隐喻
- iPhone 5 越狱安装8.4.1 与 6.1.4双系统教程