dot.js

doT.js特色是快,小,无依赖其余插件。压缩版仅有4K大小,最近使用点的时候整理出这个dot.js教程API文档,是对dot.js的介绍和实例,但愿能帮助到一部分须要的人。html

doT.js详细使用介绍

使用方法:

1
2
3
4
6
7
{{= }} for interpolation
{{ }} for evaluation
{{~ }} for array iteration
{{? }} for conditionals
{{! }} for interpolation with encoding
{{# }} for compile-time evaluation/includes and partials
{{## #}} for compile-time defines

调用方式:

1
2
var tmpText = doT.template(模板);
tmpText(数据源);


例子一:数组

1,用于插值赋值app

格式:编码

1
{{= }}

数据源:lua

1
{"name":"Jake","age":31}

区域:spa

1
< div  id = "interpolation" ></ div >

模板:

1
2
3
4
<script id= "interpolationtmpl"  type= "text/x-dot-template" >
     <div>Hi {{=it.name}}!</div>
     <div>{{=it.age ||  '' }}</div>
</script>

调用方式:插件

1
2
3
var  dataInter = { "name" : "Jake" , "age" :31};
var  interText = doT.template($( "#interpolationtmpl" ).text());
$( "#interpolation" ).html(interText(dataInter));

例子二:rest

2,用于评估循环code

格式:htm

1
2
3
{{  for  var  key  in  data { }} 
{{= key }} 
{{ } }}

数据源:

1
{"name":"Jake","age":31,"interests":["basketball","hockey","photography"],"contact":{"email":"jake@xyz.com","phone":"999999999"}}

区域:

1
< div  id = "evaluation" ></ div >

模板:

1
2
3
4
<script id= "evaluationtmpl"  type= "text/x-dot-template" >
     {{  for ( var  prop  in  it) { }}
         <div>KEY:{{= prop }}---VALUE:{{= it[prop] }}</div>
     {{ } }}
</script>

调用方式:

1
2
3
var  dataEval = { "name" : "Jake" , "age" :31, "interests" :[ "basketball" , "hockey" , "photography" ], "contact" :{ "email" : "jake@xyz.com" , "phone" : "999999999" }};
var  evalText = doT.template($( "#evaluationtmpl" ).text());
$( "#evaluation" ).html(evalText(dataEval));

例子三:

3,用于数组迭代的数组

格式:

1
2
3
{{~data.array :value:index }}
     ...
{{~}}

数据源:

1
{ "array" :[ "banana" , "apple" , "orange" ]}

区域:

1
< div  id = "arrays" ></ div >

模板:

1
2
3
4
<script id= "arraystmpl"  type= "text/x-dot-template" >
     {{~it.array:value:index}}
         <div>{{= index+1 }}{{= value }}!</div>
     {{~}}
</script>

调用方式:

1
2
3
var  dataArr = { "array" :[ "banana" , "apple" , "orange" ]};
var  arrText = doT.template($( "#arraystmpl" ).text());
$( "#arrays" ).html(arrText(dataArr));

例子四:

4,{{?条件条件

格式:

1
2
3
{{? }}  if
{{?? }}  else  if
{{??}}  else

数据源:

1
{"name":"Jake","age":31}

区域:

1
< div  id = "condition" ></ div >

模板:

1
2
3
4
6
7
8
9
<script id= "conditionstmpl"  type= "text/x-dot-template" >
     {{? !it.name }}
     <div>Oh, I love your name, {{=it.name}}!</div>
     {{?? !it.age === 0}}
     <div>Guess nobody named you yet!</div>
     {{??}}
     You are {{=it.age}} and still dont have a name?
     {{?}}
</script>

调用方式:

1
2
3
var  dataEncode = { "uri" : "http://jq22.com/?keywords=Yoga" , "html" : "<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>" };
var  EncodeText = doT.template($( "#encodetmpl" ).text());
$( "#encode" ).html(EncodeText(dataEncode));

例子五:

5,用于带编码的插值

数据源:

格式:

1
{{!it.uri}}

区域:

1
< div  id = "encode" ></ div >

模板:

1
2
3
<script id= "encodetmpl"  type= "text/x-dot-template" >
     Visit {{!it.uri}} {{!it.html}}
</script>

调用方式:

1
2
3
var  dataEncode = { "uri" : "http://jq22.com/?keywords=Yoga" , "html" : "<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>" };
var  EncodeText = doT.template($( "#encodetmpl" ).text());
$( "#encode" ).html(EncodeText(dataEncode));

例子六:

6,{{#}}用于编译时评估/包含和部分

{{###}}用于编译时定义

数据源:

1
{"name":"Jake","age":31}

区域:

1
< div  id = "part" ></ div >

模板:

1
2
3
4
6
7
<script id= "parttmpl"  type= "text/x-dot-template" >
     {{ ##def.snippet:
     <div>{{=it.name}}</div>{{ #def.joke}}
     #}}
     {{ #def.snippet}}
     {{=it.html}}
</script>

调用方式:

1
2
3
4
var  dataPart = { "name" : "Jake" , "age" :31, "html" : "<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>" };
var  defPart = { "joke" : "<div>{{=it.name}} who?</div>" };
var  partText = doT.template($( "#parttmpl" ).text(), undefined, defPart);
$( "#part" ).html(partText(dataPart));
相关文章
相关标签/搜索