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 相关文章推荐
CheckBox 如何实现全选?
Jun 23 Javascript
帮助避免错误的Javascript陷阱清单
May 31 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
JS实现从网页顶部掉下弹出层效果的方法
Aug 06 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
AngularJS中$http服务常用的应用及参数
Aug 22 Javascript
Bootstrap table使用方法详细介绍
Dec 09 Javascript
swiper Scrollbar滚动条组件详解
Sep 08 Javascript
ES6的异步操作之promise用法和async函数的具体使用
Dec 06 Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 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 session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
javascript常见用法总结
2014/05/22 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
详解Python的循环结构知识点
2019/05/20 Python
Django配置跨域并开发测试接口
2020/11/04 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
村官工作鉴定评语
2014/01/27 职场文书
追悼会主持词
2014/03/20 职场文书
父母对孩子说的话
2014/04/12 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
就业协议书范本
2014/10/08 职场文书
工作失误检讨书范文
2015/01/26 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers