doT.js github地址:

doT.js 官方站点

实例1:简单

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="../../doT.js"></script>
<script type="text/javascript" src="http://hbjltv.com/static/js/jquery-1.11.1.js"></script>
</head>
<body>
<div id="interpolationtmpl">
<div>Hi {{=it.name}}!</div>
<div>{{=it.age || ''}}</div>
</div>
<hr/>
<div id="interpolation"></div>
<script type="text/javascript">
var dataInter = {"name": "Jake", "age": 31};
var interText = doT.template($("#interpolationtmpl").html());
$("#interpolation").html(interText(dataInter));
</script>
</body>
</html>

执行结果:

实例二:条件推断

<body>
<div id="conditionstmpl">
{{? !it.name }}
<div> 你还没有名字</div>
{{?? }}
<div>Oh, I love your name, {{=it.name}}!</div>
{{? }}
</div>
<hr/>
<div id="condition"></div>
<script type="text/javascript">
var dataEncode = {"name": "黄威", "age": 31};
var interText = doT.template($("#conditionstmpl").html());
$("#condition").html(interText(dataEncode));
</script>
</body>

执行结果:

if条件推断 还有另外一种写法:

<body>
<div id="conditionstmpl">
{{ if(!it.name){ }}
<div> 你还没有名字</div>
{{ } else { }}
<div>Oh, I love your name, {{=it.name}}!</div>
{{ } }}
</div>
<hr/>
<div id="condition"></div>
<script type="text/javascript">
var dataEncode = {"name": "", "age": 31};
var interText = doT.template($("#conditionstmpl").html());
$("#condition").html(interText(dataEncode));
</script>
</body>

实例三:循环+条件推断

<body>
<div id="evaluationtmpl">
{{ for(var prop in it) { }}
{{? typeof it[prop]=='object' }}
<div style="font-weight: bold;" >KEY:{{= prop }}---VALUE:</div>
{{ for(var prop2 in it[prop]) { }}
<div style="margin-left: 20px;" >key:{{= prop2 }}---value:{{= it[prop][prop2] }}</div>
{{ } }}
{{? ? }}
<div>KEY:{{= prop }}---VALUE:{{= it[prop] }}</div>
{{? }} {{ } }}
</div>
<hr/>
<div id="evaluation"></div>
<script type="text/javascript">
var dataEval = {
"name": "Jake",
"age": 31,
"interests": ["basketball", "hockey", "photography"],
"contact": {"email": "jake@xyz.com", "phone": "999999999"}
};
var evalText = doT.template($("#evaluationtmpl").html());
$("#evaluation").html(evalText(dataEval));
</script>
</body>

执行结果:

普通循环(不是foreach)

<script id="cuslist" type="text/x-dot-template">

{{ for(var prop in it){  }}
<table>
{{? typeof it[prop]['appName']=='object' }}
<tr > <td rowspan="{{=it[prop]['appName'].length}}" >{{=it[prop]['cusName']}}</td>
<td >{{=it[prop]['appName'][0]}}</td>
</tr>
{{ for(var prop2=1;prop2 <it[prop]['appName'].length; prop2++ ){ }}
<tr><td >{{=it[prop]['appName'][prop2]}}</td></tr>
{{ } }}
{{? ? }}
<tr><td >{{=it[prop]['cusName']}}</td><td >{{=it[prop]['appName']}}</td></tr>
{{? }}
</table>
{{ } }} </script>

源代码下载地址:

doT 源代码及实例

说明:

1,{{? typeof it[prop]==’object’ }} 表示条件推断,结束标签是{{?}}

2, {{?? }}是条件推断的else

3,{{ 和{{? 中均能够使用原生的js语法,如for,typeof 等

4,模板并非一定要放在script标签中,也能够放在隐藏的div标签中

參考:doT js模板入门 2

作者: 黄威

博客地址:

CSDN博客主页

itEye博客主页

doT js模板入门的更多相关文章

  1. doT js模板入门 2

    doT js 使用{{}} 非常相似于JSP,所以用起来感觉非常亲切,非常顺手 {{–><% }}–>%> 比如: <div id="evaluationtmp ...

  2. doT js模板入门 3

    for 循环前推断循环的list是否为空 <script id="invoiceListDot" type="text/x-dot-template"&g ...

  3. doT.js模板引擎及基础原理

    时至今日,基于后端JavaScript(Node.js)和MVC思想也开始流行起来.模板引擎是数据和页面分离工作中最重要的一环,在各大门户网站均有利用到模板引擎. 模板引擎有很多种,但是原理了解也是非 ...

  4. doT.js模板和pagination分页应用

    doT.js模板和pagination分页应用 博客中模拟了数据加载初始化的过程.doT.js渲染每一项内容的数据项.示例如下: <script id="Messtmpl" ...

  5. doT js 模板引擎【初探】要优雅不要污

    js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...

  6. doT.js 模板引擎的使用

    dot.js是一个模板框架,在web前端使用. dot.js作为模板引擎, 主要的用途就是,在写好的模板上,放进数据,生成含有数据的html代码. 这是很简单的web前端模板框架, 简单说几个东西,你 ...

  7. doT.js模板用法

    前提:引入doT.min.js: <script type="text/javascript" src="js/jquery.js"></sc ...

  8. dot.js模板实现分离式

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  9. 模板引擎doT.js介绍及如何判断对象为空、如何嵌套循环···

    doT.js 灵感来源于搜寻基于 V8 和 Node.js ,强调性能,最快速最简洁的 JavaScript 模板函数 引入 javascript 文件: <script type=" ...

随机推荐

  1. 凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网

    凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网 凡客副总裁被曝离职:或因IPO受阻 2013年05月07日 00:56   每日经济新闻    我有话说     每经 ...

  2. oracle expdp和impdp使用例子

    情景: 由于生产需求,需要把rmtel用户的数据完全复制一份给rmtel_xzy,但排除rmtel用户 ('CAB_JJXPORT_TAB','T_SERVICEXX','TB_CROSSCONNEC ...

  3. RadioButtonList控件

    在这里只写,绑定数据库数据的RadioButtonList控件: 一: 首先,先在数据库中建立一张表: 1 CREATE TABLE KK 2 ( 3 id INT, 4 [name] VARCHAR ...

  4. 【转】如何在CentOS/RHEL中安装基于Web的监控系统 linux-das

    Linux-dash是一款为Linux设计的基于Web的轻量级监控面板.这个程序会实时显示各种不同的系统属性,比如CPU负载.RAM使用率.磁盘使用率.网速.网络连接.RX/TX带宽.登录用户.运行的 ...

  5. HDOJ 1005

    Input The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a ...

  6. Google出品的自动Web安全扫描程序 Skipfish 下载及安装使用方法

    Skipfish是由google出品的一款自动化的网络安全扫描工具,该工具可以安装在linux.freebsd.MacOS X系统和windows(cygwin). 谷歌工程师Michal Zalew ...

  7. 通过 HTTPS 和 SSL 确保 Windows Azure 网站 (WAWS) 安全

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 随着身份盗窃和各种形式的网络犯罪迅速增多,使用安全套接字层 (SSL) 对网站进行保护变得越来越 ...

  8. Swift - iOS中各种视图控制器(View Controller)的介绍

    在iOS中,不同的视图控制器负责不同的功能,采用不同的风格向用户呈现信息.下面对各个视图控制器做个总结: 1,标准视图控制器 - View Controller 这个控制器只是用来呈现内容.通常会用来 ...

  9. C#面向对象2 静态类、静态成员的理解

    理解:静态成员属于类所有,为各个类的实例所公用,与实例无关,需要全局共享的属性或者方法定义成静态的 C#静态成员:  1.静态成员属于类所有,故用类名调用,非静态成员属于类的实例所有,用实例名调用  ...

  10. 使用Java创建RESTful Web Service(转)

    REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...