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 相关文章推荐
JavaScript 打地鼠游戏代码说明
Oct 12 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
深入浅析AngularJS中的module(模块)
Jan 04 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
Jun 30 Javascript
浅谈在koa2中实现页面渲染的全局数据
Oct 09 Javascript
javascript中的隐式调用
Feb 10 Javascript
js实现动态改变radio状态的方法
Feb 28 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
bootstrap+spring boot实现面包屑导航功能(前端代码)
Oct 09 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 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&amp;&amp;mysql)三
2006/10/09 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
pyramid配置session的方法教程
2013/11/27 Python
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python中关于for循环的碎碎念
2017/06/30 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
Python模块的加载讲解
2019/01/15 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
医院员工辞职信范文
2015/05/12 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
详解Redis复制原理
2021/06/04 Redis
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电