JS之模板技术(aui / artTemplate)

artTemplate是个好东西啊,一个开源的js前端模板引擎,使用简单,渲染效率特别的高。

我经常使用这个技术来在前端动态生成新闻列表,排行榜,历史记录等需要在前端列表显示的信息。

下面是artTemplate的下载链接:

https://github.com/aui/artTemplate

因为artTemplate比较简单,容易上手,项目的例子,文档又比较齐全,大家有需要可以直接参考官方文档,例子进行深入了解,

我这里就这是用简单常用的,用于快速上手的一个例子吧!

先说明,我是下载artTemplate工程项目src目录下的template.js的

内容大概为:

artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。在 chrome 下渲染效率测试中分别是知名引擎 Mustache 与 micro tmpl 的 25 、 32 倍。

  除了性能优势外,调试功能也值得一提。模板调试器可以精确定位到引发渲染错误的模板语句,解决了编写模板过程中无法调试的痛苦,让开发变得高效,也避免了因为单个模板出错导致整个应用崩溃的情况发生。

  使用的方法很简单,第一步:编写模板,第二部,渲染模板。

  编写模板的方法就是很常用的拼接,与Velocity的模板编写也挺相似。

var source =
  ‘<ul>‘
+    ‘<% for (var i = 0; i < list.length; i ++) { %>‘
+        ‘<li>索引 <%= i + 1 %> :<%= list[i] %></li>‘
+    ‘<% } %>‘
+ ‘</ul>‘;

值得注意的是list是json数据的key,并不是数据的变量名,如果需要循环,可以这样写

	var data={
	    "list":datasource;
	};

渲染的方法

var render = template.compile(source);
var html = render(data);

其中data是从后台获取的json格式的数据,最后就可以将html变量插入到dom里。

  另外,渲染的方法还有两种:

template.compile([id], source);//id可选
template.render(id, data);//也可以直接渲染

id是script中定义的属性,data的格式是{key: value}的形式。这里的key就是模板的id,数据放在value部分。

更加详细的内容可参考官方文档。

...略

var template = function (id, content) {
    return template[
        typeof content === ‘object‘ ? ‘render‘ : ‘compile‘
    ].apply(template, arguments);
};

...略

其中主要也就是使用到这个函数。

前端的页面内容主要为

<body>
  <center><h1><font color="#f00">这是template模板技术使用示例</font></h1></center>
  <script id="personListId" type="text/html">
<font color="#f00" size="24">
<$for (var i = 0; i < personList.length; i++) {$>
客户姓名:<$=personList[i].name$>&nbsp;&nbsp;&nbsp;客户年龄:<$=personList[i].age$><br/>
<$}$>
</font>
</script>
  <div id="templateContent"></div>
    <script type="text/javascript" src="js/jquery-1.8.2.js"></script>
    <script type="text/javascript" src="js/template.js"></script>
    <script type="text/javascript" src="js/page/index.js"></script>
  </body>

其中我使用了jquery,template,这两个都可以上网下载,放置到对应目录就ok。

下面这段代码使用模板技术进行for循环,格式为:

<$$>对内可写js代码,<$=val$>是输出js的变量val的值,

看着这个for循环,需要注意三点:

1)<script></script>必须标上唯一id,如<script id="personListId"></script>

2)<script></script>的type的值是text/html,而不是text/javascript

3)personList这个js变量从哪里来的,这里先留个疑问吧

4)对于这个列表要怎么显示,你就对应怎么写就好,这里是最简单的显示客户姓名和客户年龄,也没带什么图片,样式之类的

客户姓名:<$=personList[i].name$>&nbsp;&nbsp;&nbsp;客户年龄:<$=personList[i].age$><br/>。

<script id="personList" type="text/html">
<font color="#f00" size="24">
<$for (var i = 0; i < personList.length; i++) {$>
客户姓名:<$=personList[i].name$>&nbsp;&nbsp;&nbsp;客户年龄:<$=personList[i].age$><br/>
<$}$>
</font>
</script>

接下来就是写自己的js代码,使用template模板技术,动态渲染以上前端代码

代码写在js/page/index.js这个文件中,内容为:

$(function(){
var persons= [
{
name : "11111111111",
age : 1111111111111111
},
{
name : "2222222222",
age : 2222222222
},
{
name : "33333333333",
age : 333333333333
}
];//自定义的json格式数据,实际应用中一般都是使用ajax请求服务器获取json格式的数据,不知道从js的哪个版本起,js已经内置支持json格式的数据

var html = template(‘personListId‘,{personList : persons});//看着这行代码,是否注意到之前提到的personListId和personList 已经在这里使用上和定义好了

$(‘#templateContent‘).html(‘‘).html(html);//jquery的用法,目的就是将动态生成的内容(html)填充到id为templateContent的div

});

write less,do more,i like

JS之模板技术(aui / artTemplate)

时间: 2024-10-24 17:53:44

JS之模板技术(aui / artTemplate)的相关文章

html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)

目标 需要的是在选择第一个select下拉列表后,将选择的内容传送到PHP页面.在PHP页面中通过查询数库,得到第二个select需要显示的option的值,并在select中显示. 方案 1  利用ajax上传数据到PHP,由于利用了smarty模板技术,可以直接给模板中的变量赋值,这样就可以不用通过ajax接收返回值再经过处理输出了. 由于这个PHP页面没有包含在其他PHP页面里,是独立的.这样就造成无法赋值. 2  通过ajax接收返回值,这里的返回值就是以上数据库查询的结果. 通过jso

[DikeJS]关于js模板技术,使用requireJS定义模块(四)

前几次对模板技术进行了分析和编写,发现不是很合理,现在发上新的改良代码: /**  * @Author Dike.Li  * @Date 2015/7/30  * @class Template  * @public  * @Description Template Label Replace  */ define(function (require) {     /**      * 提取模板中 XXX='{XXX}' || XXX="{XXX}"      * @type {Reg

MVC下的客户端模板技术

1.引言 在Web编程中,我们有时经常需要使用Ajax来访问服务端的接口,然后使用这些返回的数据(一般格式都是JSON)来展示客户端的相关信息.例如:在一个商品列表,我们点击某一样的商品,查看该商品的信息信息.这时通过指定的ID来获取商品详细信息后,我们很多时候都是讲HTML和JavaScript结合起来.通过构造HTML标签和JS的填充来展示相关的界面.这样大量的标签拼接,一来不容易维护,二来也导致在编码过程中容易出现错误.今天我给大家做一下客户端模板技术的简单介绍.希望可以通过这个技术在一定

smarty模板技术

smarty简介: smarty是php领域流行的一种模板技术,免费,其核心就是一个类(smarty类). 我们的主要目标就是学习怎么使用这个类. smarty的特点: 速度快(因为第二次执行的时候使用第一次执行时生成的编译文件) 缓存技术(正是因为缓存技术,使得smarty模板技术不太适合那些对于实时性更新要求比较高的,比如股票信息) 插件技术(正是因为插件技术,使得smarty可以被扩展) 编译型(访问一个页面一次之后会生成一个编译文件,第二次再来访问这个页面的时候,就会访问这个编译文件,从

前端模板技术面面观(1)

此文已由作者郑海波授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 此文的写作耗时很长,称之为雄文不为过,小心慢用 此文缘由 其实从发布regularjs之后,我发现在google搜索regularjs 不是给我这个画面 就是给我这个画面 突然发现取名字真是个大学问,当时就基本预计到了会有不明真相的朋友认为它只是一个照搬angularjs的家伙,对于这点,有兴趣的朋友可以看下[为什么要造Regularjs这个轮子]. 而在这个文章,我不会直截了当去与angular做直接的对

js使用模板快速填充数据

1.html <!DOCTYPE html> <html> <head> <title>模板标签</title> </head> <body> <table id="tableData"> <tr class="firstLine"> <th></th> <th>图片</th> <th>图片名称<

JS中模板嵌套学习(代码)

<script src="script/jquery-1.4.2.js"></script>    <script src="script/jsrender.js"></script>    <script id="header" type="text/x-jsrender">        <tr>               <th>序号&

velocity模板技术生成word文档

本文介绍采用velocity技术在Java中生成word文档的方法. 1.新建一个word文档,编辑内容如下: 2.将上述word文档另存为htm格式的文件 3.新建一个Java Project项目velocityTest,加入Velocity所依赖的Jar包velocity-dep-1.5-beta2.jar. 4.在src目录下新建一个velocity.vm文件,将第二步生成的velocity.htm用文本编辑器打开,复制内容到velocity.vm中.内容如下: <html xmlns:v

DataUml Design 教程5-代码模板介绍(甚于T4模板技术)

DataUml Design 代码模板完全基于C#语言来编写的.不懂写模板的可以请教作者,随时欢迎.下面是一段模板代码,这段代码可以获取一个类结构的所有信息. <#@ template language="C#" HostSpecific="True" #> <# NetUmlTemplateCodeHost host = (NetUmlTemplateCodeHost)(Host); #> 命名空间:<#= host.ClassPro