全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaScript模板引擎Template.js使用详解

template.js 一款 JavaScript 模板引擎,简单,好用。提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段,渲染不同的效果。https://github.com/aui/artTemplate

1、特性

(1)、性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试)(2)、支持运行时调试,可精确定位异常模板所在语句(演示)

(3)、对 NodeJS Express 友好支持(4)、安全,默认对输出进行转义、在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板)

(5)、支持include语句

(6)、可在浏览器端实现按路径加载模板(详情)

(7)、支持预编译,可将模板转换成为非常精简的 js 文件

(8)、模板语句简洁,无需前缀引用数据,有简洁版本与原生语法版本可选

(9)、支持所有流行的浏览器

2、语法

(1)、使用

引用简洁语法的引擎版本,例如: <script src="dist/template.js"></script> 

(2)、表达式

{{ 与 }} 符号包裹起来的语句则为模板的逻辑表达式。

(3)、输出表达式

对内容编码输出: {{content}} 
不编码输出: {{#content}} 
编码可以防止数据中含有 HTML 字符串,避免引起 XSS 攻击。

(4)、条件表达式

{{if admin}} 
 <p>admin</p> 
{{else if code > 0}} 
 <p>master</p> 
{{else}} 
 <p>error!</p> 
{{/if}} 

(5)、遍历表达式

无论数组或者对象都可以用 each 进行遍历。

{{each list as value index}} 
 <li>{{index}} - {{value.user}}</li> 
{{/each}} 

亦可以被简写:

{{each list}} 
 <li>{{$index}} - {{$value.user}}</li> 
{{/each}} 

(6)、模板包含表达式

用于嵌入子模板。

{{include 'template_name'}} 

子模板默认共享当前数据,亦可以指定数据:{{include 'template_name' news_list}} 

(7)、辅助方法

使用template.helper(name, callback)注册公用辅助方法:

template.helper('dateFormat', function (date, format) { 
 // .. 
 return value; 
}); 

模板中使用的方式: {{time | dateFormat:'yyyy-MM-dd hh:mm:ss'}} 
支持传入参数与嵌套使用: {{time | say:'cd' | ubb | link}} 

3、实例

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>basic-demo</title> 
<script src="../dist/template.js"></script> 
</head> 
<body> 
<div id="content"></div> 
<script id="test" type="text/html"> 
{{if isAdmin}} 
<h1>{{title}}</h1> 
<ul> 
 {{each list as value i}} 
  <li>索引 {{i + 1}} :{{value}}</li> 
 {{/each}} 
</ul> 
{{/if}} 
</script> 
<script> 
var data = { 
 title: '基本例子', 
 isAdmin: true, 
 list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'] 
}; 
var html = template('test', data); 
document.getElementById('content').innerHTML = html; 
</script> 
</body> 
</html>

 

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>no escape-demo</title> 
<script src="../dist/template.js"></script> 
</head> 
 
<body> 
 <h1>不转义HTML</h1> 
 <div id="content"></div> 
 <script id="test" type="text/html"> 
 <p>不转义:{{#value}}</p> 
 <p>默认转义: {{value}}</p> 
 </script> 
 
 <script> 
 var data = { 
  value: '<span style="color:#F00">hello world!</span>' 
 }; 
 var html = template('test', data); 
 document.getElementById('content').innerHTML = html; 
 </script> 
</body> 
</html> 

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>include-demo</title> 
<script src="../dist/template.js"></script> 
</head> 
 
<body> 
<div id="content"></div> 
<script id="test" type="text/html"> 
<h1>{{title}}</h1> 
{{include 'list'}} 
</script> 
<script id="list" type="text/html"> 
<ul> 
 {{each list as value i}} 
  <li>索引 {{i + 1}} :{{value}}</li> 
 {{/each}} 
</ul> 
</script> 
 
<script> 
var data = { 
 title: '嵌入子模板', 
 list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'] 
}; 
var html = template('test', data); 
document.getElementById('content').innerHTML = html; 
</script> 
</body> 
</html> 

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>helper-demo</title> 
<script src="../dist/template.js"></script> 
</head> 
 
<body> 
<h1>辅助方法</h1> 
<div id="content"></div> 
<script id="test" type="text/html"> 
{{time | dateFormat:'yyyy年 MM月 dd日 hh:mm:ss'}} 
</script> 
 
<script> 
/** 
 * 对日期进行格式化, 
 * @param date 要格式化的日期 
 * @param format 进行格式化的模式字符串 
 *  支持的模式字母有: 
 *  y:年, 
 *  M:年中的月份(1-12), 
 *  d:月份中的天(1-31), 
 *  h:小时(0-23), 
 *  m:分(0-59), 
 *  s:秒(0-59), 
 *  S:毫秒(0-999), 
 *  q:季度(1-4) 
 * @return String 
 * @author yanis.wang 
 * @see http://yaniswang.com/frontend/2013/02/16/dateformat-performance/ 
 */ 
template.helper('dateFormat', function (date, format) { 
 
 if (typeof date === "string") { 
  var mts = date.match(/(\/Date(\d+)\/)/); 
  if (mts && mts.length >= 3) { 
   date = parseInt(mts[2]); 
  } 
 } 
 date = new Date(date); 
 if (!date || date.toUTCString() == "Invalid Date") { 
  return ""; 
 } 
 
 var map = { 
  "M": date.getMonth() + 1, //月份 
  "d": date.getDate(), //日 
  "h": date.getHours(), //小时 
  "m": date.getMinutes(), //分 
  "s": date.getSeconds(), //秒 
  "q": Math.floor((date.getMonth() + 3) / 3), //季度 
  "S": date.getMilliseconds() //毫秒 
 }; 
  
 
 format = format.replace(/([yMdhmsqS])+/g, function(all, t){ 
  var v = map[t]; 
  if(v !== undefined){ 
   if(all.length > 1){ 
    v = '0' + v; 
    v = v.substr(v.length-2); 
   } 
   return v; 
  } 
  else if(t === 'y'){ 
   return (date.getFullYear() + '').substr(4 - all.length); 
  } 
  return all; 
 }); 
 return format; 
}); 
 
// -------- 
 
var data = { 
 time: 1408536771253, 
}; 
var html = template('test', data); 
document.getElementById('content').innerHTML = html; 
</script> 
</body> 
</html> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 模板引擎  # template.js  # javascript轻量级模板引擎juicer使用指南  # 教你使用javascript简单写一个页面模板引擎  # laytpl 精致巧妙的JavaScript模板引擎  # 详解Javascript模板引擎mustache.js  # 探究Javascript模板引擎mustache.js使用方法  # 详解Js模板引擎(TrimPath)  # JavaScript模板引擎用法实例  # 常用的JavaScript模板引擎介绍  # 高性能JavaScript模板引擎实现原理详解  # JavaScript模板引擎原理与用法详解  # 只有 20 行的 JavaScript 模板引擎实例详解  # 遍历  # 亦可  # 可以用  # 博客  # 可在  # 可选  # 可将  # 用户可以  # 好用  # 则为  # 大家多多  # 年中  # 可以防止  # 性能测试  # 加载  # 上传  # 中含有  # list  # template 


相关文章: 在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何在云主机上快速搭建网站?  如何选择最佳自助建站系统?快速指南解析优劣  建站之星客服服务时间及联系方式如何?  公司网站设计制作厂家,怎么创建自己的一个网站?  建站主机CVM配置优化、SEO策略与性能提升指南  香港网站服务器数量如何影响SEO优化效果?  建站之星备案是否影响网站上线时间?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  深圳网站制作平台,深圳市做网站好的公司有哪些?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  建站之星如何快速解决建站难题?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  高防服务器:AI智能防御DDoS攻击与数据安全保障  存储型VPS适合搭建中小型网站吗?  如何快速打造个性化非模板自助建站?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何构建满足综合性能需求的优质建站方案?  如何选择靠谱的建站公司加盟品牌?  建站之星logo尺寸如何设置最合适?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  网站app免费制作软件,能免费看各大网站视频的手机app?  模具网站制作流程,如何找模具客户?  制作证书网站有哪些,全国城建培训中心证书查询官网?  宁波免费建站如何选择可靠模板与平台?  重庆市网站制作公司,重庆招聘网站哪个好?  网站代码制作软件有哪些,如何生成自己网站的代码?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  在线制作视频网站免费,都有哪些好的动漫网站?  制作公司内部网站有哪些,内网如何建网站?  如何快速搭建响应式可视化网站?  如何在宝塔面板创建新站点?  小程序网站制作需要准备什么资料,如何制作小程序?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  制作电商网页,电商供应链怎么做?  网站制作需要会哪些技术,建立一个网站要花费多少?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  南京网站制作费用,南京远驱官方网站?  完全自定义免费建站平台:主题模板在线生成一站式服务  建站主机服务器选型指南与性能优化方案解析  制作旅游网站html,怎样注册旅游网站?  如何快速生成凡客建站的专业级图册?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何通过二级域名建站提升品牌影响力?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  微信小程序 input输入框控件详解及实例(多种示例) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。