JavaScript模板引擎用法实例


Posted in Javascript onJuly 10, 2015

本文实例讲述了JavaScript模板引擎用法。分享给大家供大家参考。具体如下:

这里介绍的这个模板引擎写得短小精悍,非常值得一看

tmpl.js文件如下:

// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
(function() {
 var cache = {};
 this.tmpl = function tmpl(str, data) {
  // Figure out if we're getting a template, or if we need to
  // load the template - and be sure to cache the result.
  var fn = 
   !/\W/.test(str) 
   ? 
   cache[str] = cache[str] || tmpl(document.getElementById(str).innerHTML) 
   :
   // Generate a reusable function that will serve as a template
   // generator (and which will be cached).
   new Function(
    "obj", "var p=[],print=function(){p.push.apply(p,arguments);};" +
    // Introduce the data as local variables using with(){}
    "with(obj){p.push('" +
    // Convert the template into pure JavaScript
    str
     .replace(/[\r\t\n]/g, " ")
     .split("<%").join("\t")
     .replace(/((^|%>)[^\t]*)'/g, "$1\r")
     .replace(/\t=(.*?)%>/g, "',$1,'")
     .split("\t")
     .join("');")
     .split("%>")
     .join("p.push('")
     .split("\r")
     .join("\\'") + 
    "');}return p.join('');"
   ); // Function ends
  // Provide some basic currying to the user
  return data ? fn(data) : fn;
 };
})();

index.html文件如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>JavaScript tmpl Use Demo</title>
  <script type="text/javascript" src="js/jquery.min.js"></script>
  <script src="./tmpl.js" type="text/javascript"></script>
   <!-- 下面是模板user_tmpl -->
  <script type="text/html" id="user_tmpl">
   <% for ( var i = 0; i < users.length; i++ ) { %>
   <li><a href="<%=users[i].url%>"><%=users[i].name%></a></li>
   <% } %>
  </script>
  <script type="text/javascript">
  // 用来填充模板的数据
   var users = [
    { url: "http://baidu.com", name: "jxq"},
    { url: "http://google.com", name: "william"}
   ];
   $(function() {
   // 调用模板引擎函数将数据填充到模板获得最终内容
    $("#myUl").html(tmpl("user_tmpl", users));
   });
  </script>
 </head>
 <body>
  <div>
   <ul id="myUl">
   </ul>
  </div>
 </body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
不用写JS也能使用EXTJS视频演示
Dec 29 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
Jun 07 Javascript
javascript变量作用域使用中常见错误总结
Mar 26 Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 Javascript
JQuery节点元素属性操作方法
Jun 11 Javascript
jquery中val()方法是从最后一个选项往前读取的
Sep 06 Javascript
jQuery仿京东商城楼梯式导航定位菜单
Jul 25 Javascript
ES6概念 Symbol toString()方法
Dec 25 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
关于vue 结合原生js 解决echarts resize问题
Jul 26 Javascript
HTML+JS实现在线朗读器
Feb 15 Javascript
JavaScript实现打字效果的方法
Jul 10 #Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 #Javascript
再谈JavaScript线程
Jul 10 #Javascript
javascript实现判断鼠标的状态
Jul 10 #Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 #Javascript
javascript实现确定和取消提示框效果
Jul 10 #Javascript
javascript实现的简单的表单验证
Jul 10 #Javascript
You might like
php生成缩略图的类代码
2008/10/02 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
php生成微信红包数组的方法
2019/09/05 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python机器学习之神经网络实现
2018/10/13 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
5款实用的python 工具推荐
2020/10/13 Python
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
《尊严》教学反思
2014/02/11 职场文书
开学典礼决心书
2014/03/11 职场文书
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技