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

1.语法:

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

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

            (3)输出表达式 : 对内容编码输出: {{content}} ,不编码输出: {{#content}}  

            (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}} 

<!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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值