doT.js 模板引擎 自定义标签格式

本人有些时候就是有强迫症,最近编写一个纯html的前端,使用 doT.js 模版框架,发现可以自定义模版标签,于是自己修改了一下标签格式,终于不用忍受双大括号 {{}} 了,自定义标签直接使用 {} 单双括号,当前项目是纯静态单页,没有和其他语言混淆,不怕冲突,就满足自己一下下吧!


自定义配置:

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:       /\{\/?(if|el)(seif|se)?\s*([\s\S]*?)\s*\}/g,
iterate:           /\{\/?each\s*(?:\}|([\s\S]+?)\s*(?:\:\s*([\w$]+))?\s*(?:\:\s*([\w$]+))?\s*\})/g,
varname:	   "data",
strip:		   true,
append:		   true,
selfcontained:     false,
doNotSkipEncoded:  false

1、对象值输出

<span>{$v.name}</span>

2、判断语句

{if data.gender=='m'}
	先生
{elseif data.gender=='w'}
	女士
{else}
	保密
{/if}

3、循环

{each data.users}
	<span>{$v.name}</span>
{/each}

指定 value 和 key 变量值

{each data.users:value:key}
	<span>{$key}:{$value.name}</span>
{/each}

4、模版嵌套

{##def.showGender:
	{if v.gender=='m'}
		先生
	{elseif v.gender=='w'}
		女士
	{else}
		保密
	{/if}
#}

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

这样写是不是清爽多了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值