JSON JQUERY模板实现说明


Posted in Javascript onJuly 03, 2010

可是在客户端再现数据也是一个不小的问题,用javascript处理经常会遇到很繁琐的事.尤其大批量具有相同结构的数据,例如表格,处理方式不尽如意.如果能有一个模板控件,就像服务器端asp.net Gridview或者repeater一样的东西就好很多.最近看到一个非常优秀的解决方案,让我在使用方便的同时不得不为作者的精巧设计而作一番感叹.该解决方案用了区区二十几行代码,实现了别人要用几十甚至上百K的js库所做的工作.它就是John Resig 的 Microtemplating engine.大师Rick Strahl有一篇文章专门对此作了详细讲述(Client Templating with Jquery).我在这里把最核心部分提取出来以方便国人学习。

下面一段程序就是microtemplating engine.

var _tmplCache = {} 
this.parseTemplate = function(str, data) { 
/// <summary> 
/// Client side template parser that uses <#= #> and <# code #> expressions. 
/// and # # code blocks for template expansion. 
/// NOTE: chokes on single quotes in the document in some situations 
/// use ’ for literals in text and avoid any single quote 
/// attribute delimiters. 
/// </summary> 
/// <param name="str" type="string">The text of the template to expand</param> 
/// <param name="data" type="var"> 
/// Any data that is to be merged. Pass an object and 
/// that object's properties are visible as variables. 
/// </param> 
/// <returns type="string" /> 
var err = ""; 
try { 
var func = _tmplCache[str]; 
if (!func) { 
var strFunc = 
"var p=[],print=function(){p.push.apply(p,arguments);};" + 
"with(obj){p.push('" + str.replace(/[\r\t\n]/g, " ") 
.replace(/'(?=[^#]*#>)/g, "\t") 
.split("'").join("\\'") 
.split("\t").join("'") 
.replace(/<#=(.+?)#>/g, "',$1,'") 
.split("<#").join("');") 
.split("#>").join("p.push('") 
+ "');}return p.join('');"; 
//alert(strFunc); 
func = new Function("obj", strFunc); 
_tmplCache[str] = func; 
} 
return func(data); 
} catch (e) { err = e.message; } 
return "< # ERROR: " + err.htmlEncode() + " # >"; 
}

如何使用:
parseTemplate($("#ItemTemplate").html(),{ name: "rick", address: { street: "32 kaiea", city: "paia"} } );

上面程序所用的模板:

<script id="ItemTemplate" type="text/html"><div><div><#= name #></div><div><#= address.street #></div> </div></script>

如果想用循环:

$.each(dataarray,function(index,dataItem){ 
parseTemplate($("#ItemTemplate").html(), dataItem ); 
})

很简单很精巧吧?
Javascript 相关文章推荐
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
jQuery.buildFragment使用方法及思路分析
Jan 07 Javascript
jQuery中click事件用法实例
Dec 26 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
mpvue 单文件页面配置详解
Dec 02 Javascript
JavaScript实现单图片上传并预览功能
Sep 30 Javascript
VUE注册全局组件和局部组件过程解析
Oct 10 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
Node.js中的异步生成器与异步迭代详解
Jan 31 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
jquery.boxy插件的iframe扩展代码
Jul 02 #Javascript
JQuery AJAX提交中文乱码的解决方案
Jul 02 #Javascript
IE本地存储userdata的一个bug说明
Jul 01 #Javascript
UserData用法总结 lanyu出品
Jul 01 #Javascript
javascript 函数调用的对象和方法
Jul 01 #Javascript
this和执行上下文实现代码
Jul 01 #Javascript
jquery.validate使用攻略 第五步 正则验证
Jul 01 #Javascript
You might like
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
图片按比例缩放函数
2006/06/26 Javascript
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
Python threading多线程编程实例
2014/09/18 Python
Python random模块常用方法
2014/11/03 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
梅西百货官网:Macy’s
2020/08/04 全球购物
单位刻章介绍信范文
2014/01/11 职场文书
《观舞记》教学反思
2014/04/16 职场文书
我的祖国演讲稿
2014/05/04 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
介绍信格式样本
2015/05/05 职场文书
护士心得体会范文
2016/01/25 职场文书