1. 程式人生 > >[js高手之路]Node.js模板引擎教程-jade速學與實戰2-流程控制,轉義與非轉義

[js高手之路]Node.js模板引擎教程-jade速學與實戰2-流程控制,轉義與非轉義

title 學習 != 下一步 cas ase spa back name

一、轉義與非轉義

jade模板文件代碼:

 1 doctype html
 2 html
 3     head
 4         meta(charset=‘utf-8‘)
 5         title jade學習-by ghostwu
 6     body
 7         h3  轉義與非轉義
 8         - var userName = ‘ghostwu‘
 9         - var str = ‘<script>alert("ghostwu");</script>10         div #{userName}
11 div #{str} 12 div !{str} 13 div= userName 14 div= str 15 div!= str 16 div \#{userName} 17 div \!{str} 18 div(data-innerHTML=age) 19 div(data-innerHTML=‘#{age}‘) 20 div(data-innerHTML=‘#{userName}‘)

技術分享

編譯之後的效果:

技術分享

解釋:

#{} : 帶有轉義效果的輸出

!{}: 不轉義輸出

= : 與#{}效果相同

!= : 與!{}效果相同

\#{}:原樣輸出#{}

屬性後面跟#{age},會把變量解釋出來,如果這個變量沒有定義,就會輸出undefined。在實際情況中,如果沒有定義的變量就不要輸出,我們可以直接這樣做 屬性=變量名,他會自動判斷該變量是否設置,決定是否輸出變量的值或者不要輸出屬性,如 div(data-innerHTML=userName) userName我們設置了,所以會編譯輸出<div data-innerHTML="ghostwu"></div>

二、流程控制(循環)

jade文件代碼:

技術分享
 1 doctype html
 2 html
 3     head
 4         meta(charset=‘utf-8‘)
 5         title jade學習-by ghostwu
 6     body
 7         h3 流程控制(for...in)
 8         - var userInfo = { userName : ‘ghostwu‘, age : 22 };
 9         ul 用戶信息
10             - for ( var key in userInfo )
11                 li= userInfo[key]
12         h3 流程控制(for...each語法糖)
13         ul 用戶信息
14             - each val, key in userInfo
15                 li #{key}->#{val}
16         h3 for..each遍歷數組
17         - var skills = [‘php‘,‘linux‘,‘javascript‘,‘node.js‘];
18         ul 技能
19             - each item in skills
20                 li #{item}
21         h3 嵌套for...each循環
22         -
23             var userList = [
24                 {
25                     user : ‘ghostwu‘,
26                     skill : [‘javascript‘,‘node.js‘,‘linux‘]
27                 },
28                 {
29                     user : ‘八戒‘,
30                     skill : [‘吹牛b‘, ‘泡妞‘]
31                 }
32             ];
33         ul 用戶信息
34             - each val, key in userList
35                 li #{userList[key][‘user‘]}
36                     ul 該用戶技能
37                         - each v, k in userList[key][‘skill‘]
38                             li #{v}
View Code

技術分享

技術分享

編譯之後的結果:

技術分享
 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="utf-8">
 5     <title>jade學習-by ghostwu</title>
 6   </head>
 7   <body>
 8     <h3>流程控制(for...in)</h3>
 9     <ul>用戶信息
10       <li>ghostwu</li>
11       <li>22</li>
12     </ul>
13     <h3>流程控制(for...each語法糖)</h3>
14     <ul>用戶信息
15       <li>userName->ghostwu</li>
16       <li>age->22</li>
17     </ul>
18     <h3>for..each遍歷數組</h3>
19     <ul>技能
20       <li>php</li>
21       <li>linux</li>
22       <li>javascript</li>
23       <li>node.js</li>
24     </ul>
25     <h3>嵌套for...each循環</h3>
26     <ul>用戶信息
27       <li>ghostwu
28         <ul>該用戶技能
29           <li>javascript</li>
30           <li>node.js</li>
31           <li>linux</li>
32         </ul>
33       </li>
34       <li>八戒
35         <ul>該用戶技能
36           <li>吹牛b</li>
37           <li>泡妞</li>
38         </ul>
39       </li>
40     </ul>
41   </body>
42 </html>
View Code

循環的語法跟原生js差不多,each這裏的val, key是當前數組的值和鍵.

三、條件判斷語句

技術分享

編譯之後的結果:

技術分享

if.else很好理解,跟原生js一樣

unless: 給定條件是否不符合要求,如果不符合,就執行下一步.

switch...case語句在jade中的寫法

技術分享
 1 doctype html
 2 html
 3     head
 4         meta(charset=‘utf-8‘)
 5         title jade學習-by ghostwu
 6     body
 7         h3 條件語句
 8         - var skill = ‘linux‘;
 9         case skill
10             when php
11                 p 你會php
12             when java
13                 p 你會java
14             when linux
15                 p 你會linux
16             default
17                 p #{skill}
View Code

技術分享

編譯之後:

技術分享

[js高手之路]Node.js模板引擎教程-jade速學與實戰2-流程控制,轉義與非轉義