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 相关文章推荐
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
JQuery的$命名冲突详细解析
Dec 28 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 Javascript
理解JavaScript事件对象
Jan 25 Javascript
基于JavaScript如何制作遮罩层对话框
Jan 26 Javascript
xmlplus组件设计系列之列表(4)
Apr 26 Javascript
基于BootStrap实现简洁注册界面
Jul 20 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
Jul 18 Javascript
TypeScript之调用栈的实现
Dec 31 Javascript
JavaScript交换变量常用4种方法解析
Sep 02 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
Python实现上下文管理器的方法
2020/08/07 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
UNIX文件系统分类
2014/11/11 面试题
应聘医学检验人员自荐信
2013/09/27 职场文书
逃课上网检讨书
2014/02/20 职场文书
高中课程设置方案
2014/05/28 职场文书
同意迁入证明模板
2014/10/26 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP