doT.js 模板引擎 完全使用说明和示例

doT.js 是一个独立的,简小快速的JS模版引擎

下载地址:https://github.com/olado/doT


1、渲染,模版中传入的变量引用,都需要通过 it.变量名 进行引用

var tempFn = doT.template("<h1>{{=it.title}}</h1>");
var resultHtml = tempFn({'title':'Hello world'});

其中,doT.template(tmpl,c,def) 函数支持3个参数:

  • tmpl:模版代码
  • c:配置参数,主要是实现自定义模版语法格式等,除非你像定制自己的模版风格,一般不去重定义。
  • def:子模版列表,可以在模板中通过 {{#}} 嵌入使用

可传入的配置项以及默认值:

evaluate:         /\{\{([\s\S]+?(\}?)+)\}\}/g,
interpolate:      /\{\{=([\s\S]+?)\}\}/g,
encode:           /\{\{!([\s\S]+?)\}\}/g,
use:              /\{\{#([\s\S]+?)\}\}/g,
useParams:        /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
define:           /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
defineParams:     /^\s*([\w$]+):([\s\S]+)/,
conditional:      /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
iterate:          /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
varname:	  "it",
strip:		  true,
append:	          true,
selfcontained:    false,
doNotSkipEncoded: false

传入子模版例:

var defPart = {"userItme":"<div>{{=it.name}} / {{=v.gender}}</div>"};
var partText = doT.template("<div><li>{{#userItme}}<li></div>",undefined,defPart);
$("#userInfot").html(data);

2、输出对象值以及默认值 {{=}}

<div>{{=name}} / {{=it.age || '18'}}</div>

3、输出编码话的变量值(<>等标记将被转化为html实体){{!}}

<div>{{!it.name}} / {{!it.note || '这家伙真懒,没有填写任何备注'}}</div>

4、循环数组 {{~}}

<form class="userlist">
	<ul>
		{{~it.users:v:k}}
		<li>
			{{= v.name }} / {{= v.gender }}
		</li>
		{{~}}
	</ul>
</form>

5、判断 {{?}}

{{? v.gender=='m' }}
	先生
{{?? v.gender=='w' }}
	女士
{{??}}
	保密
{{?}}

6、嵌入原生js代码 {{}}

<form class="userlist">
	<ul>
		{{ for(var k in it.user) { }}
		<li>
			{{= it.user[k].name }} / {{= it.user[k].gender }}
		</li>
		{{~}}
	</ul>
</form>

7、模版嵌套 {{#}} {{##}} 

{{##def.showGender:
	{{? v.gender=='m' }}
		先生
	{{?? v.gender=='w' }}
		女士
	{{??}}
		保密
	{{?}}
#}}

<form class="userlist">
	<ul>
		{{~it.users:v:k}}
		<li>
			{{= v.name }} / {{#def.showGender}}
		</li>
		{{~}}
	</ul>
</form>

模版嵌套支持多级嵌套,例如:

{{##def.showGender:
	{{? v.gender=='m' }}
		先生
	{{?? v.gender=='w' }}
		女士
	{{??}}
		保密
	{{?}}
#}}

{{##def.userItem:
	{{= v.name }} / {{#def.showGender}}
#}}


<form class="userlist">
	<ul>
		{{~it.users:v:k}}
		<li>
			{{#def.userItem}}
		</li>
		{{~}}
	</ul>
</form>

除了在模板中使用 {{##}} 声明子模版外,还可以在渲染的时候,通过 doT.template 传参传入子模版列表。详情请参看说明1。

更多使用说明和示例,可参看:http://olado.github.io/doT/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值