通常情況下,在我們使用ajax請求數據獲得一個json格式的響應體,並且要將獲得的相應數據填充到HTML頁面上的時候,可能需要自己拼接字符串,這樣比較麻煩,而使用模板引擎就可以幫我們省卻自己拼接字符串的過程。
使用模板引擎其實就是預先寫好HTML結構代碼,然后調用模板引擎第三方庫,自動把數據填充到這個HTML里。
今天要介紹的是artTemplate這款模板框架,下載地址:https://github.com/aui/art-template,下載完成之后解壓,然后找到 lib 文件夾,把里面的 template-web.js 文件放到你的項目目錄下
1 <script type="xxxx" id="tpl"> 2 <p> 3 我叫<span><%= name %></span>,今年<span><%= age %</span>歲了 4 </p> 5 </script>
-
要用script標簽,必須給type屬性,但是值可以隨便寫,只要不是
text/javascript
就可以,但是我們一般寫text/html
-
必須要給這個script標簽加 id ,因為后面需要找到標簽內的模板
-
模板里就是未來想顯示的html代碼,只是里面有些值不能寫死,要根據json數據來填充,所以把不寫死的數據用
<%= 屬性名 %>
包起來
<script src="./template-web.js"></script>
1 //JSON字符串轉化為對象 2 var obj = JSON.parse(xhr.responseText); 3 4 //找到tpl,並用obj對象填充,填充后的結果是一段html代碼 5 var html = template('tpl',obj); 6 7 //打印看結果 8 console.log(html);
打印結果為:
-
可以看到,當用了模板引擎后,會自動把JSON對應的屬性值,填充到模板中同樣屬性名的地方,如下圖
1 <script type="text/html" id="tpl"> 2 <!-- list是我們自己起的虛擬數組名 3 到時json數據一拿到,把json數組賦值給這個list 4 就能自動把JSON數組每條數據都遍歷成tr顯示了 5 --> 6 <% for(var i = 0;i < list.length; i++){ %> 7 8 <tr> 9 <td><%= list[i]['Id'] %></td> 10 <td><%= list[i]['name'] %></td> 11 <td><%= list[i]['age'] %></td> 12 <td><%= list[i]['score'] %></td> 13 </tr> 14 <% } %> 15 </script>
1 var data = JSON.parse(xhr.responseText); 2 //參數2:list:data 意思是把data這個真實的JSON數組替換掉模板里的list值 3 var html = template('tpl', { list: data }); 4 document.querySelector('tbody').innerHTML = html;
-
注意:模板里的數組叫list,那么參數2也叫list,要注意別寫錯。
{{each list value key}}
-
-
list是自己定義的虛擬數組或對象,使用模板時用真實JSON數組或對象替換
-
如果list是對象,那么value就是屬性值,如果list是數組,那么value得到的就是元素
-
如果list是對象,那么key就是屬性名,如果list是數組,那么key就是下標
-
例:
1 <script type="text/html" id="tpl"> 2 3 {{each list value key}} 4 <tr> 5 <td>{{value.Id}}</td> 6 <td>{{value.name}}</td> 7 <td>{{value.age}}</td> 8 <td>{{value.score}}</td> 9 </tr> 10 {{/each}} 11 12 </script>
1 //把報文轉換為JSON數組 2 var data = JSON.parse(xhr.responseText); 3 //使用模板替換 4 var html = template('tpl', { list: data }); 5 //替換后的內容放到網頁 6 document.querySelector('tbody').innerHTML = html;
artTemplate模板引擎的基本使用就這樣,按照步驟來就可以了,希望對大家的學習有所幫助