jQuery .tmpl() 用法示例介绍


Posted in Javascript onAugust 21, 2014

动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等。

这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在浏览器端拼数据就在服务器端拼数据。不过,从传输量方面来看,返回 HTML 不划算,而在 web 传输方面,现在更多的是使用 JSON 而不是 XML。

浏览器端根据 JSON 生成 HTML 有个很苦恼的地方就是,结构不复杂的时候还好,结构一复杂,就想死了,需要很小心很小心地写出几乎无法维护的 JavaScript 代码。

如同为解决 PHP 拼数据这方面的问题而有了 Smarty 这些模版,JavaScript 也可以利用模版来解决这些问题,比如基于 jQuery 的 jquery.tmpl,现在已经被接受为官方的模版插件了。详细的 API 在 jQuery 的 Templates 里,内置的 demo 也尽情地演示了各种用法。

就我自己的几次使用,感觉很不错,用更加直观方面的 HTML 写法而不是 JavaScript 拼凑 来写结构,然后用 JSON 变量来占位的方式来填充数据,代码看起来好多了。

Tmpl提供了几种tag:

${}:等同于{{=}},是输出变量,通过了html编码的。
{{html}}:输出变量html,但是没有html编码,适合输出html代码。
{{if }} {{else}}:提供了分支逻辑。
{{each}}:提供循环逻辑,$value访问迭代变量。

jquery tmpl的使用方法:

模板定义:

方法一:

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
<li> 
<b>${Name}</b> (${ReleaseYear}) 
</li> 
</script>

方法二:

function makeTemplate(){ 
var markup='<li><b>${Name}</b> (${ReleaseYear})</li>‘; 
$.template(“movieTemplate”, markup); 
}

DATA:

var movies = [ 
{ Name: "The Red Violin", ReleaseYear: "1998" }, 
{ Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
{ Name: "The Inheritance", ReleaseYear: "1976" } 
];

Script:

$( "#movieTemplate" ).tmpl( movies ) 
.appendTo( "#movieList" );

实例1:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script src="http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script> 
</head> 
<body> 

<ul class="param-list"></ul> 

<script type="text/x-jquery-tmpl" id="new-param-tmpl"> 
<li rel="${num}"> 
<input type="text" name="key[${num}]" value="${key}" placeholder="key" /> = 
<input type="text" name="value[${num}]" value="${value}" placeholder="value" /> 
<button type="button" class="button small remove-param"><img src="http://mediacdn.disqus.com/1338845651/images/v3/icon/16/69.png" height="12" alt=""/></button> 
<button type="button" class="button small add-param"><span><img src="http://mediacdn.disqus.com/1338845651/images/v3/icon/16/13.png" height="12" alt=""/></button> 
</li> 
</script> 

<script> 
$(function(){ 
function addParam(key, value) { 
var param_list = $('.param-list'); 
var num = param_list.find('li').length; 

// build a template to clone the current row 
var built = $('#new-param-tmpl').tmpl({ 
num: num, 
key: key || '', 
value: value || '', 
}); 
if (key) param_list.prepend(built); 
else param_list.append(built); 

param_list.find('li:not(:last) .add-param').hide(); 
param_list.find('li:last .add-param').show(); 
param_list.find('li:not(:last) .remove-param').show(); 
param_list.find('li:last .remove-param').hide(); 
} 

// bind events 
$('.param-list .remove-param').live('click', function(){ 
$(this).parent().remove(); 
return false; 
}); 
$('.param-list .add-param').live('click', function(){ 
addParam(); 
return false; 
}); 

addParam(); 
})
</script> 
</body> 
</html>

实例2

<ul id="movieList"></ul> 

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
<li><b>${Name}</b> (${ReleaseYear})</li> 
</script> 

<script type="text/javascript"> 
var movies = [ 
{ Name: "The Red Violin", ReleaseYear: "1998" }, 
{ Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
{ Name: "The Inheritance", ReleaseYear: "1976" } 
]; 

// Render the template with the movies data and insert 
// the rendered HTML under the "movieList" element 
$( "#movieTemplate" ).tmpl( movies ) 
.appendTo( "#movieList" ); 
</script>
Javascript 相关文章推荐
Javascript 代码也可以变得优美的实现方法
Jun 22 Javascript
js window.onload 加载多个函数的方法
Nov 02 Javascript
javascript延时加载之defer测试
Dec 28 Javascript
js实现jquery的offset()方法实例
Jan 10 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
May 05 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
jquery插件autocomplete用法示例
Jul 01 Javascript
JS禁止查看网页源代码的实现方法
Oct 12 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
javascript合并两个数组最简单的实现方法
Sep 14 Javascript
jQuery控制TR显示隐藏的三种常用方法
Aug 21 #Javascript
jQuery截取指定长度字符串代码
Aug 21 #Javascript
jquery实现的下拉和收缩效果示例
Aug 21 #Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 #Javascript
使用jQuery设置disabled属性与移除disabled属性
Aug 21 #Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 #Javascript
Javascript 绘制 sin 曲线过程附图
Aug 21 #Javascript
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
艺术系应届生的自我评价
2013/10/19 职场文书
个性大学生自我评价
2013/12/04 职场文书
皮肤科医师岗位职责
2013/12/04 职场文书
行政上诉状范文
2015/05/23 职场文书
人民调解协议书
2016/03/21 职场文书
Java spring单点登录系统
2021/09/04 Java/Android