jquery.tmpl是jQuery模板插件,http://plugins.jquery.com/tmpl/ (另外還有一個插件dot.js,不依賴與jquery,性能更佳,使用方法大同小異)
在網頁中大量使用異步請求數據來更新頁面內容非常常見,異步請求返回的內容一般是表現為json格式的數據,因為HTML結構的復雜性,我們在沒有使用任何工具下要將json表現格式的數據生成HTML是非常繁瑣的,而且容易出錯,不好維護。因此通過jquery.tmpl和定義HTML模板可以輕松很多,更利於維護。
Tmpl提供了幾種tag:
1, ${}:等同於{{=}},是輸出變量,通過了html編碼的。
2, {{html}}:輸出變量html,但是沒有html編碼,適合輸出html代碼。
3, {{if }} {{else}}:提供了分支邏輯。
4, {{each}}:提供循環邏輯,$value訪問迭代變量。
基本使用
1,首先我們需要引用jquery.js和jquery.tmpl.js
2,定義一個模板
3,調用tmpl()方法:$("模板ID").tmpl(data);
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> </head> <style type="text/css"> #list li { padding: 8px 0; line-height: 1.8em; list-style-type: decimal; } </style> <body> <ul id="list"></ul> </body> </html> <script type="text/javascript" src='jquery.js'></script> <script type="text/javascript" src='jquery.tmpl.js'></script>
<!--定義一個User模板--> <script type="text/template" id='UserTmpl'> <li> <span>${NickName}</span> <span>${Age}</span> <span>${Gender}<span> </li> </script> <script type="text/javascript"> var users=[{ID:"0001",NickName:"小白",Gender:false,Age:18},{ID:"0001",NickName:"小黑",Gender:true,Age:20}]; $("#list").append($("#UserTmpl").tmpl(users)); </script>
{{if }} {{else}}的使用
明顯對於性別Gender屬性需要使用到{{if}}和{{else}}了
修改一下模板 {{if}}后面加的就是符合if里面條件后要輸出的HTML, 使用{{if}}需要有結束標記{{/if}}
<li> <span>${NickName}</span> <span>${Age}</span> {{if Gender}} <span>男</span> {{else}} <span>女</span> {{/if}} </li>
{{each}}使用
<script id="each" type="text/x-jquery-tmpl"> <li> <span>${Title}</span> <span>Languages:</span> <ul> {{each Languages}} <li>${$value.Name}</li> {{/each}} <ul> </li> </script> <script type="text/javascript"> var movies = [{Title: "Meet Joe Black", Languages: [{ Name: "English" },{ Name: "French" }]}]; $("#each").tmpl(movies).appendTo('#div_each'); </script>