art-template模板引擎使用运用

207 阅读1分钟

art-template模板引擎使用运用

模板引擎概念,它可以根据程序员指定的 模板结构 和 数据,自动生成一个完整的HTML页面。

优势:减少了字符串的拼接操作、使代码结构更清晰、使代码更易于阅读与维护\

安装

1:浏览器访问 aui.github.io/art-templat…
2:找到 安装 导航栏,找到下载链接,右键下载即可\

 

基本使用

art-template使用步骤 

1: 引入template模板引擎文件
2: 定义数据
3: 定义模板
4 :定义模板
5:渲染html结构

<!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta http-equiv="X-UA-Compatible" content="IE=edge">
 7   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 8   <title>Document</title>
 9   <!-- 1 引入template文件 -->
10   <script src="./lib/template-web.js"></script>
11   <script src="./lib/jquery.js"></script>
12 </head>
13 
14 <body>
15   <div class="box"></div>
16  <!-- 3 定义模板 -->
17   <!-- 3.1 模板的html必须定义到script标签中,叫做teplate('模板id',需要渲染的数据对象) -->
18   <!-- 3.2 给模板添加一个id -->
19   <!-- 3.3 模板里面如果需要使用到传入的数据,利用{{}}实现 
20   例如:{{name}},那么就会去找 我们调用 template() 函数 第二个参数里面对应的name属性的值 -->
21   <!--{{}}  占位符  -->
22   <script type="text/html" id="temp">
23   <h2>{{uname}}------{{age}}</h2>
31   </script>
32   <script>
33     // 2 定义数据 对象数据类型
34    var data = { uname: '张三', age: 20}
36     // 4 调用template函数 template('模板id',需要渲染的数据对象) 
37     var templateStr = template('temp', data)
38     console.log(templateStr);
39    // 5 渲染html数据 最后我们需要把template返回的模板字符串设置到页面容器中
40     $('.box').html(templateStr)
41   </script>
42 </body>
43 
44 </html>

标准语法

标准语法概念: 在 {{}} 内可以进行 变量输出 或 循环数组 等操作,这种 {{}} 语法在 art-template 中被称为标准语法

输出:在 {{}} 语法中,可以进行 变量 的输出,对象属性的输出,三元表达式输出,逻辑或输出,加减乘除等表达式输出

 

1: 原文输出  {{@ value}}

注意:输出的 value 值中,包含了 HTML 标签结构,则需要使用原文输出语法,才能保证HTML标签被正常渲染

2:条件输出  在 {{}} 中使用 if...else if.../if 的方式,进行按需输出

 

3: 循环输出

在{{}} 内,通过 each 语法循环数组 当前循环的索引使用  $index 进行访问,当****前循环项使用  $value 进行访问

 

  4:过滤器

  过滤器语法类似于 管道操作符,它的上一个输出作为下一个输入

定义过滤器的基本语法:

 示列如下:(请看一、二、三、四标注的示列) 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 7     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 8     <title>Document</title>
 9     <!-- 1 引入template模板引擎文件 -->
10     <script src="../day02/lib/template-web.js"></script>
11     <script src="../day02/lib/jquery.js"></script>
12 </head>
13 
14 <body>
15     <div id="container"></div>
16     <!-- 3 定义模板 -->
17     <!-- 3.1 模板的html结构,必须定义到sript中 -->
18     <script type="text/html" id="tpl_user">
19      <h1>{{name}}----{{age}}</h1>
20    <!-- 一、原文输出 --> 
21      <div>{{@ test }}</div>
22     <!-- 三、选好输出 each -->
23      <ul>
24          {{each hobby}}
25          <li>索引是:{{$index }},当前循环项是:{{$value}}</li>
26          {{/each}}
27      </ul>
28     <!-- 二、if 条件输出 --> 
29     <div>
30         {{if flag===0}}
31         flag的值是0
32         {{else if flag===1}}
33         flag的值是1
34         {{/if}}
35     </div>
36    <!-- 四、过滤器 -->
37    <!-- 四(3)管道操作符  在模板引擎中使用过滤器-->
38     <!-- newTiem 服务器返回的日期, filterName日期格式化 -->
39     <h3>{{newTime | filterName}}</h3>
40     </script>
41     <script>
42        // 四(2) 定义处理时间的过滤器
43        //形参date,由实参newTime 传递过来
44         template.defaults.imports.filterName = function (date) {
                var dt=new Date(date)
45             // console.log(date);
46             // 年
47             var y = dt.getFullYear()
48             y = y < 10 ? '0' + y : y;
49             // 月
50             var m = dt.getMonth() + 1;
51             m = m < 10 ? '0' + m : m;
52             // 日
53             var d = dt.getDate()
54             d = d < 10 ? '0' + d : d;
55             // 时
56             var hh = dt.getHours()
57              hh = hh < 10 ? '0' + hh : hh;
58             // 分
59             var mm = dt.getMinutes()
60               mm = mm < 10 ? '0' + mm : mm
61             // 秒
62             var ss = dt.getSeconds()
63              ss = ss < 10 ? '0' + ss : ss
64              // 星期
65             var arr=['星期日', '星期一', '星期二','星期三', '星期四', '星期五', '星期六',]
66             var day = dt.getDay();
67 
68             return `${y}-${m}-${d} ${hh}:${mm}:${ss} ${arr[day]}`
69         }
70         // 2 定义数据
71         // 四(1) 定义数据newTime: new Date()
72         var data = {
73             name: 'zs', age: 30, test: '<h3>原文输出<h3>', hobby: ['吃饭', '睡觉', '打豆豆'],
74             flag: 1, newTime: new Date()
75         }
76         // 4 调用template函数
77         var htmlStr = template('tpl_user', data)
78         console.log(htmlStr);
79         // 5 渲染html结构
80         $('#container').html(htmlStr)
81 
82     </script>
83 </body>
84 
85 </html>