为什么要使用模板引擎

无论是Ajax或者跨域,获取数据后渲染到前端界面的方式就是动态生成HTML标签。
生成HTML标签可以用过拼接字符串的方式来实现。但是这种方式在结构比较复杂的场景下不便于操作和维护,出错率较高。
这时候就会用到模板引擎,通过模板引擎可以更方便的生成HTML标签。

什么是模板引擎

模板引擎的本质就是将数据和模板结合起来生成HTML片段。所以模板引擎需要两个组成部分:模板和数据。通过数据将模板
指定的标签动态生成,方便维护。

artTemplate模板引擎

腾讯出品的开源模板引擎,
使用步骤:
1.引入js文件;

  1. <script type="text/javascript" src="js/template.js"></script>

2.定义模板;
3.将数据和模板结合起来生成HTML标签;
4.渲染界面

artTemplate使用

A 基础使用

  1. <div id="container"></div>
  1. //基础使用
  2. <script type="text/html" id="bookList">
  3. <!-- 模板 -->
  4. <h2>{{title}}</h2>
  5. {{each name value i}}
  6. <div class="name">{{value}}</div>
  7. {{/each}}
  8. </script>
  9. <script type="text/javascript">
  10. var data = {
  11. title: "四大名著图书信息",
  12. name:["三国演义","水浒传","红楼梦","西游记"]
  13. }
  14. var html = template("bookList",data);
  15. var container = document.querySelector('#container');
  16. container.innerHTML = html;
  17. </script>

B 条件判断

  1. <script type="text/html" id="bookList">
  2. {{if isAdmin}}
  3. <h2>{{title}}</h2>
  4. {{each name value i}}
  5. <div class="name">{{value}}</div>
  6. {{/each}}
  7. {{/if}}
  8. {{if !isAdmin}}
  9. <h2>没有查询到任何数据</h2>
  10. {{/if}}
  11. </script>
  12. <script type="text/javascript">
  13. var data = {
  14. title: "条件判断",
  15. isAdmin: true,
  16. name:["文艺","博客","摄影","电影","民谣"]
  17. }
  18. var html = template("bookList",data);
  19. var container = document.querySelector('#container');
  20. container.innerHTML = html;
  21. </script>

C 对象中添加数组

  1. <script type="text/html" id="bookList">
  2. {{each arr value i}}
  3. <div class="name">{{value}}</div>
  4. {{/each}}
  5. </script>
  6. <script type="text/javascript">
  7. var data = ["文艺","博客","摄影","电影","民谣"];
  8. var temp = {};
  9. temp.arr = data;
  10. var html = template("bookList",temp);
  11. var container = document.querySelector('#container');
  12. container.innerHTML = html;
  13. </script>

D 转义与非转义
image.png

  1. <script type="text/html" id="bookList">
  2. <p>转义:{{value}}</p>
  3. <p>非转义:{{@value}}</p>
  4. </script>
  5. <script type="text/javascript">
  6. var data = {
  7. value:"<span style='color: #007aff; font-size: 20px'>artTemplate</span>"
  8. }
  9. var html = template("bookList",data);
  10. var container = document.querySelector('#container');
  11. container.innerHTML = html;
  12. </script>