我是靠谱客的博主 迷人心锁,这篇文章主要介绍快速上手超级实用的JS模板引擎--doT.js,现在分享给大家,希望可以做个参考。

文章目录

      • 总体结构
      • 使用教程
        • 1. 赋值
        • 2. 数组
        • 3. 条件
        • 4. 编码渲染
        • 5. 定义与引用公共模块
        • 6. 循环
      • Reference

总体结构

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dot</title> <!--引入jQuery和doT.js文件 --> <script src="assets/vendor/jquery/jquery-1.12.4.js"></script> <script src="assets/js/doT.js"></script> </head> <body> <!--显示区--> <!--js模板--> <!--数据源--> <!--模板渲染--> </body> </html>

下面的例子中使用的都是写死的数据,具体项目中数据源使用的是Ajax从后台获取数据

使用教程

1. 赋值

格式

复制代码
1
2
{{= }}

Demo

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!--显示区--> <div id="view"></div> <!--js模板--> <script type="text/x-dot-template" id="js-template"> <h1>Hello, {{=it.name}}!</h1> </script> <!--数据源--> <script> let json = { "name": "秋叶依剑", "age": "23" }; </script> <!--模板渲染--> <script> let tmpl = doT.template($("#js-template").html()); /*生成模板方法*/ $("#view").html(tmpl(json)); //数据渲染 </script>

2. 数组

格式

复制代码
1
2
3
4
{{~it:value:index }} ... {{~}}

Demo

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!--显示区--> <div id="view"></div> <!--js模板--> <script type="text/x-dot-template" id="js-template"> <ul> {{~it:value:index}} <li>姓名: {{=value.name}} 年龄: {{=value.age}}</li> {{~}} </ul> </script> <!--数据源--> <script> let json = [{ "name": "张三", "age": 21 }, { "name": "李四", "age": 22 }, { "name": "王五", "age": 23 }]; </script> <!--模板渲染--> <script> let tmpl = doT.template($("#js-template").html()); /*生成模板方法*/ $("#view").html(tmpl(json)); //数据渲染 </script>

3. 条件

格式

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
{{? value.age >= 100}} <!--if(value.age == 100)--> <li>姓名: {{=value.name}} 年龄: 百岁老人</li> {{?? value.age <= 3}} <!--else if(value.age == 3)--> <li>姓名: {{=value.name}} 年龄: 可爱baby</li> {{??}} <!--else--> <li>姓名: {{=value.name}} 年龄: {{=value.age}}</li> {{?}} <!--结束条件判断-->

Demo

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!--显示区--> <div id="view"></div> <!--js模板--> <script type="text/x-dot-template" id="js-template"> <ul> {{~it:value:index}} {{? value.age >= 100}} <!--if(value.age == 100)--> <li>姓名: {{=value.name}} 年龄: 百岁老人</li> {{?? value.age <= 3}} <!--else if(value.age == 3)--> <li>姓名: {{=value.name}} 年龄: 可爱baby</li> {{??}} <!--else--> <li>姓名: {{=value.name}} 年龄: {{=value.age}}</li> {{?}} <!--结束条件判断--> {{~}} <!--结束数组循环--> </ul> </script> <!--数据源--> <script> let json = [{ "name": "张三", "age": 21 }, { "name": "李四", "age": 100 }, { "name": "王五", "age": 3 }]; </script> <!--模板渲染--> <script> let tmpl = doT.template($("#js-template").html()); /*生成模板方法*/ $("#view").html(tmpl(json)); //数据渲染 </script>

4. 编码渲染

将获取的数据以字符串的形式渲染,html标签不会被浏览器解析,可以防止代码注入

格式

复制代码
1
2
{{! }}

Demo

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!--显示区--> <div id="view"></div> <!--js模板--> <script type="text/x-dot-template" id="js-template"> <ul> {{~it:value:index}} {{? value.age == 20}} <!--按照原来的样式形式输出,html标签会被浏览器解析--> <li>姓名: {{=value.name}} FreeStyle: {{=value.freeStyle}}</li> {{??}} <!--字符串的形式输出,html标签不会被浏览器解析,可以防止代码注入--> <li>姓名: {{=value.name}} FreeStyle: {{!value.freeStyle}}</li> {{?}} {{~}} </ul> </script> <!--数据源--> <script> let json = [{ "name": "张三", "age": 20, "freeStyle": "<h3>Rap</h3>" }, { "name": "李四", "age": 18, "freeStyle": "<h3>Basketball</h3>" }]; </script> <!--模板渲染--> <script> let tmpl = doT.template($("#js-template").html()); /*生成模板方法*/ $("#view").html(tmpl(json)); //数据渲染 </script>

5. 定义与引用公共模块

格式

复制代码
1
2
3
4
5
6
7
<!--定义公共模块1--> {{##def.module1: ... #}} <!--引用模块1--> {{#def.module1}}

Demo

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!--显示区--> <div id="view"></div> <!--js模板--> <script type="text/x-dot-template" id="js-template"> <!--定义公共模块1--> {{##def.module1: <li style="color: red">姓名: {{=value.name}} FreeStyle: {{=value.freeStyle}} <span>你引用了模块1</span></li> #}} <!--定义公共模块2--> {{##def.module2: <li style="color: pink">姓名: {{=value.name}} FreeStyle: {{=value.freeStyle}} <span>你引用了模块2</span></li> #}} <ul> {{~it:value:index}} {{? value.age == 18}} <!--引用模块1--> {{#def.module1}} {{?? value.age == 20}} <!--引用模块2--> {{#def.module2}} {{?}} {{~}} </ul> </script> <!--数据源--> <script> let json = [{ "name": "张三", "age": 20, "freeStyle": "Rap" }, { "name": "李四", "age": 18, "freeStyle": "BasketBall" }]; </script> <!--模板渲染--> <script> let tmpl = doT.template($("#js-template").html()); /*生成模板方法*/ $("#view").html(tmpl(json)); //数据渲染 </script>

6. 循环

格式

每行JS语句均需要 {{ }}包住

复制代码
1
2
3
4
5
6
7
8
9
{{ for(let i = 0; i < it.length; i++){ }} {{ let value = it[i]; }} {{ if(value.age === 20) { }} ... {{ }else{ }} ... {{ } }} {{ } }}

Demo

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!--显示区--> <div id="view"></div> <!--js模板--> <script type="text/x-dot-template" id="js-template"> <!--定义公共模块1--> {{##def.module1: <li style="color: red">姓名: {{=value.name}} FreeStyle: {{=value.freeStyle}} <span>你引用了模块1</span></li> #}} <!--定义公共模块2--> {{##def.module2: <li style="color: pink">姓名: {{=value.name}} FreeStyle: {{=value.freeStyle}} <span>你引用了模块2</span></li> #}} <ul> {{ for(let i = 0; i < it.length; i++){ }} {{ let value = it[i]; }} {{ if(value.age === 20) { }} {{#def.module1}} {{ }else{ }} {{#def.module2}} {{ } }} {{ } }} </ul> </script> <!--数据源--> <script> let json = [{ "name": "张三", "age": 20, "freeStyle": "Rap" }, { "name": "李四", "age": 18, "freeStyle": "BasketBall" }]; </script> <!--模板渲染--> <script> let tmpl = doT.template($("#js-template").html()); /*生成模板方法*/ $("#view").html(tmpl(json)); //数据渲染 </script>

Reference

  • http://www.jq22.com/jquery-info8648
  • https://www.cnblogs.com/zhao-yi/p/7485447.html

最后

以上就是迷人心锁最近收集整理的关于快速上手超级实用的JS模板引擎--doT.js的全部内容,更多相关快速上手超级实用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部