doT.js 模板引擎

doT.js特点是快,小,无依赖其他插件。

官网:
http://olado.github.io

使用方法:
{{= }} for interpolation —–赋值
{{ }} for evaluation —–循环
{{~ }} for array iteration —–数组
{{? }} for conditionals —–条件
{{! }} for interpolation with encoding
{{# }} for compile-time evaluation/includes and partials
{{## #}} for compile-time defines

调用方式:
var tmpText = doT.template(模板);
tmpText(数据源);

下面请欣赏小例旬的颜值…

div部分:

<!-- 循环 -->
<ul id="forDo">
<script type="text/template" charset="utf-8" id='demo_1'>
{{if( it && it.length>0 ){}}

{{for(var i=0;i<it.length;i++){}}
    <li>{{=it[i].name}}</li>

{{ } }}
{{ }else{ }}
  <li>没有数据</li>
{{ } }}
 </script>
</ul>

<!-- 取值 -->
<div id="interpolationtmpl_1">
  <script id="interpolationtmpl" type="text/x-dot-template">
    <div>Hi {{=it.name}} !</div>
    <div>{{=it.gender || ''}}</div>
  </script>
</div>
<br/>
<!-- 判断 
格式:
{{? }} if
{{?? }} else if
{{??}} else
-->
<div id='conditionstmpl_1'>
  <script id="conditionstmpl" type="text/x-dot-template">
  {{? !it.name }}
    <div>哇,兵长太帅受不了,我的 {{=it.name}}!</div>
  {{?? !it.height === 0}}
    <div>进击的巨人第二季你看了嘛!</div>
  {{??}}
    虽然你的身高只有{{=it.height}} 但是不耽误你的帅气,兵长兵长~~
  {{?}}
  </script>
</div>

JS部分:

// 循环
var _demo=document.getElementById('demo_1').innerHTML;
var obj=[{name:'乔巴'},{name:'罗'},{name:'女帝'}];

document.getElementById('forDo').innerHTML= doT.template(_demo)(obj);

// 取值
var dataInter = {"name":"污力穷小可矮","gender":'色女'};
var interText = document.getElementById('interpolationtmpl').innerHTML;
document.getElementById('interpolationtmpl_1').innerHTML= doT.template(interText)(dataInter);

//判断
var EncodeText =document.getElementById('conditionstmpl').innerHTML;
var dataEncode = {"name":"利威尔","height":'160cm'};
document.getElementById('conditionstmpl_1').innerHTML= doT.template(EncodeText)(dataEncode);

数组

div部分

<div id="arraystmpl_1">
<script id="arraystmpl" type="text/x-dot-template">
{{~it.array:value:index}}
<div>{{=index+1}}{{=value}}</div>
{{~}}  (不要忘记这个小尾巴)
</script>
</div>

上面的html大家可以试着调换一下value、index的位置,看刊数值显示的位置。

JS部分

//数组
var arrText = document.getElementById('arraystmpl').innerHTML;
var dataArr = {"array":["红豆","大红豆","芋头"]};
document.getElementById('arraystmpl_1').innerHTML=doT.template(arrText)(dataArr);

渲染出:
这里写图片描述

DIV 部分

<!-- 没有准确用词1 -->
<div id="encodetmpl_1">
  <script id="encodetmpl" type="text/x-dot-template">
    Visit {{!it.uri}} {{=it.html}}
</script>
</div>

JS 部分

var EncodeText =  document.getElementById('encodetmpl').innerHTML;
var dataEncode = {"uri":"https://github.com/olado/doT","html":"<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>"};
document.getElementById('encodetmpl_1').innerHTML=doT.template(EncodeText)(dataEncode);

渲染结果:
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值