`
karlhell
  • 浏览: 105599 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于jQuery开发的javascript模板引擎-jTemplates

    博客分类:
  • JS
阅读更多
这里介绍一个基于jQuery开发的模板引擎。
jTemplates目前最新的版本是0.7.8,由tPython开发。官方网站:http://jtemplates.tpython.com

两个附件,一个是jTemplates官方网站提供的下载包,其中包括jTemplates的说明、jTemplates JS库、jTemplates DOC。
          另一个是使用jTemplates做的三个DEMO。

一 , 简单介绍

它是一个基于jQuery开发的javascript模板引擎。它主要的作用如下:

1. 通过JavaScript获取JSON形式的数据;

2. 获取一个HTML模板,与数据相结合,生成页面HTML。

二 , 快速上手

先来看一个简单的例子:
<script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
<script type="text/javascript" src="jquery-jtemplates.js"></script>

<script type="text/javascript">
   $(document).ready(function() {
    //初始化数据
    var data = {
     name: '用户列表',
     list_id: '编号89757',
     table: [
      {id: 1, name: 'Rain', age: 22, mail: 'cssrain@domain.com'},
      {id: 2, name: '皮特', age: 24, mail: 'cssrain@domain.com'},
      {id: 3, name: '卡卡', age: 20, mail: 'cssrain@domain.com'},
      {id: 4, name: '戏戏', age: 26, mail: 'cssrain@domain.com'},
      {id: 5, name: '一揪', age: 25, mail: 'cssrain@domain.com'}
     ]
    };
    // 附上模板
    $("#result1").setTemplateElement("template");
    // 给模板加载数据
    $("#result1").processTemplate(data);
   }); 
</script>

<!-- 模板内容 -->
<textarea id="template" style="display:none">
   <strong>{$T.name} : {$T.list_id}</strong>
   <table>
        <tr>
      <th>编号</th>
      <th>姓名</th>
                    <th>年龄</th>
      <th>邮箱</th>
    </tr>
    {#foreach $T.table as record}
    <tr>
      <td>{$T.record.id}</td>
      <td>{$T.record.name}</td>
                    <td>{$T.record.age}</td>
      <td>{$T.record.mail}</td>
    </tr>
    {#/for}
   </table>
</textarea>

<!-- 输出元素 -->
<div id="result1" ></div>


上面代码中,先导入了jQuery.js,然后导入jtemplates.js。

接下来新建了一个data数据的json对象。

var data = {
     ......
};

然后在HTMl页面上增加一个 输出元素 和 一个模板元素:

最后在JS给输出元素 附加模板 和 数据。

这样,运行代码后,出现如下图所示界面。

用户列表 : 编号89757
编号   姓名  年龄  邮箱
1        Rain   22    cssrain@domain.com
2        皮特   24   cssrain@domain.com
3       卡卡   20    cssrain@domain.com
4       戏戏   26    cssrain@domain.com
5       一揪   25    cssrain@domain.com



三 , 加载模板

这次把模板放到一个单独的页面中,而不是直接写在页面里。

新建一个template.html,放入以下代码:
<strong>{$T.name} : {$T.list_id}</strong>
<table>
    <tr>
    <th>编号</th>
    <th>姓名</th>
            <th>年龄</th>
    <th>邮箱</th>
</tr>
{#foreach $T.table as record}
<tr>
    <td>{$T.record.id}</td>
    <td>{$T.record.name}</td>
            <td>{$T.record.age}</td>
    <td>{$T.record.mail}</td>
</tr>
{#/for}
</table>


然后新建一个json文件,名称为cs.json,代码如下:
{
name: "用户列表",
list_id: "编号89757",
    table: [
     {id: 1, name: 'Rain', age: 22, mail: 'cssrain@domain.com'},
     {id: 2, name: '皮特', age: 24, mail: 'cssrain@domain.com'},
     {id: 3, name: '卡卡', age: 20, mail: 'cssrain@domain.com'},
     {id: 4, name: '戏戏', age: 26, mail: 'cssrain@domain.com'},
     {id: 5, name: '一揪', age: 25, mail: 'cssrain@domain.com'}
]
}


在jQuery中,可以通过$.ajax()方法来加载 json文件,代码如下:
<script type="text/javascript">
$(function(){
$.ajax({
   type:       "post",
   dataType:   "json",
   url:        "cs.json",
success:    function(data){
                    .....
                }
});
});
</script>


在success回调函数里,首先需要设置模板,然后需要添加数据。如下代码所示:
success:    function(data){

                    // 设置模板
                   $("#result1").setTemplateURL("template.html?date="+(+new Date()), null, {filter_data: true});
                    //   加载数据
                    $("#result1").processTemplate(data);
                }
}


完整代码如下所示:
$(function(){
$.ajax({
   type:       "post",
   dataType:   "json",
   url:        "cs.json",
success:    function(data){
                    $("#result1").setTemplateURL("template.html?date="+(+new Date()), null, {filter_data: true});
                    $("#result1").processTemplate(data);
                }
});
});


分享到:
评论
2 楼 zhexiaode 2014-07-30  
感谢了 学习了
1 楼 liuyf 2010-09-16  
强大。谢谢分享

相关推荐

Global site tag (gtag.js) - Google Analytics