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 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
javaScript面向对象继承方法经典实现
Aug 20 Javascript
使用js在页面中绘制表格核心代码
Sep 16 Javascript
js实现鼠标划过给div加透明度的方法
May 25 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 Javascript
详解微信小程序回到顶部的两种方式
May 09 Javascript
vue实现下拉菜单树
Oct 22 Javascript
JavaScript实现网页动态生成表格
Nov 25 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
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/04/09 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
Python读写Redis数据库操作示例
2014/03/18 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
Python实现图像几何变换
2015/07/06 Python
django 发送手机验证码的示例代码
2018/04/25 Python
python自动生成model文件过程详解
2019/11/02 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
理工科学生的自我评价
2013/12/15 职场文书
青年教师培训方案
2014/02/06 职场文书
博士生求职信
2014/07/06 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
篮球赛新闻稿
2015/07/17 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python