doT.js模板学习笔记

欢迎学习doT.js模板学习笔记

doT.js官方网站
本文章得示例源码

doT.js模板是什么

doT.js 是一个 JavaScript 模板框架,在 web 前端使用 dot.js 作为模板引擎,主要的用途就是,在写好的模板上,放进数据,生成含有数据的 html 代码。

doT.js 主要优势在

  1. 小巧精简,源代码不超过两百行,6KB 的大小,压缩版只有 4KB;
  2. 支持表达式丰富,涵盖几乎所有应用场景的表达式语句;
  3. 性能优秀;
  4. 不依赖第三方库。

doT.js好处

和后端渲染不同,doT.js 的渲染完全交由前端来进行,这样做主要有以下好处:

  • 脱离后端渲染语言,不需要依赖后端项目的启动,从而降低了开发耦合度、提升开发效率;
  • View 层渲染逻辑全在 JavaScript 层实现,容易维护和修改;
  • 数据通过接口得到,无需考虑后端数据模型变化,只需关心数据格式。

引入方式

  • javascript 文件引入:
<script type="text/javascript" src="./js/doT.min.js"></script>
  • node.js 方式
 npm install dot

然后在代码中使用

require('dot')

基本语法

  1. 插值:{{=it.xxx }}
  2. 取值:{{=xxx }}
  3. 遍历数组:{{~it.array :value:index}} ...{{~}}
  4. 遍历对象:javascript {{ for var key in data { }} {{= key }} {{ } }}
  5. 三木运算:{{=(it.value=='somevalue'?'value1':'value2')}}
  6. 条件判断:{{? }} 表if{{??}}表else if{{??}}表else
  7. encoding后再插值:{{!it.xxx}}
  8. 编译时取值:{{# }} for compile-time evaluation/includes and partials
  9. 编译时定义:{{## #}} for compile-time defines

语法示例

  1. 插值:{{=it.xxx }} 用法:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javascript" src="./js/doT.min.js"></script>
    <script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div id="showHtml"></div>
    <script type="text/javascript">
            var data = {"name":"Jake","age":31};
            var str = "<div>Hi {{=it.name}}!</div><div>{{=it.age || ''}}</div>"
            var tempFn = doT.template(str);
            $("#showHtml").html(tempFn(data));
    </script>
</body>
</html>

输出:在这里插入图片描述

  1. 取值:{{=xxx }} 和 遍历对象 用法:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javascript" src="./js/doT.min.js"></script>
    <script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div id="showHtml"></div>
    <script type="text/javascript">
            var data = {"name":"Jake","age":31,"mother":"Kate","father":"John",
            "interests":["basketball","hockey","photography"],"contact":{"email"
            :"jake@xyz.com","phone":"999999999"}};
            var str = "{{ for(var prop in it) { }}<div>{{=prop}}</div>{{ } }}"
            var tempFn = doT.template(str);
            $("#showHtml").html(tempFn(data));
    </script>
</body>
</html>

输出:在这里插入图片描述

  1. 遍历数组:{{~it.array :value:index}} ...{{~}}用法:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javascript" src="./js/doT.min.js"></script>
    <script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div id="showHtml"></div>
    <script type="text/javascript">
            var data = {"array":["banana","apple","orange"]};
            var str = "{{~it.array:value:index}}<div>{{=value}}!</div>{{~}}"
            var tempFn = doT.template(str);
            $("#showHtml").html(tempFn(data));
    </script>
</body>
</html>

输出:在这里插入图片描述

  1. 三木运算:{{=(it.value=='somevalue'?'value1':'value2')}} 用法
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javascript" src="./js/doT.min.js"></script>
    <script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div id="showHtml"></div>
    <script type="text/javascript">
            var data = {"name":"Jake","age":31};
            var str = "{{=(it.name=='Tom'?'我':'他')}}"
            var tempFn = doT.template(str);
            $("#showHtml").html(tempFn(data));
    </script>
</body>
</html>

输出:在这里插入图片描述

  1. 条件判断:{{? }} 表if{{??}}表else if{{??}}表else 用法:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javascript" src="./js/doT.min.js"></script>
    <script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
</head>

<body>
    <div id="showHtml"></div>
    <script type="text/javascript">
            var data = {"name":"Jake","age":31};
            var str = "{{? !it.name == 'Tom'}} <div> 我叫Tom</div>" +
            "{{??}}<div> 我叫Jake</div>{{?}}";
            var tempFn = doT.template(str);
            $("#showHtml").html(tempFn(data));
    </script>
</body>
</html>

输出:在这里插入图片描述

结尾

以上是doT.js的基础用法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值