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 相关文章推荐
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
Dec 27 Javascript
javascript Prototype 对象扩展
May 15 Javascript
IE中的File域无法清空使用jQuery重设File域
Apr 24 Javascript
如何利用AngularJS打造一款简单Web应用
Dec 05 Javascript
JavaScript学习笔记之数组去重
Mar 23 Javascript
js简单正则验证汉字英文及下划线的方法
Nov 28 Javascript
微信小程序手势操作之单触摸点与多触摸点
Mar 10 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
详解EasyUi控件中的Datagrid
Aug 23 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
Dec 13 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 Javascript
解决vue字符串换行问题(绝对管用)
Aug 06 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自动注册登录验证机制实现代码
2011/12/20 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
python tkinter实现连连看游戏
2020/11/16 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
什么是makefile? 如何编写makefile?
2012/08/08 面试题
毕业生物理教师求职信
2013/10/17 职场文书
大学生暑期实践感言
2014/02/26 职场文书
财务情况说明书范文
2014/05/06 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
关于教师节的广播稿
2015/08/19 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技