看了Mustache的github,學學其中的語法,做個筆記
1.簡單的變量替換:{{name}}
1 var data = { "name": "Willy" }; 2 Mustache.render("{{name}} is awesome.",data);
返回結果 Willy is awesome.
2.如果變量含有html的代碼的,例如:<br>、<tr>等等而不想轉義可以在用{{&name}}
1 var data = { 2 "name" : "<br>Willy<br>" 3 }; 4 var output = Mustache.render("{{&name}} is awesome.", data); 5 console.log(output);
結果:<br>Willy<br> is awesome.
去掉"&"的結果是轉義為:<br>Willy<br> is awesome.(默認將"<"和">"轉義)
3.如果是對象,還能解釋其屬性
1 var data = { 2 "name" : { 3 "first" : "Chen", 4 "last" : "Jackson" 5 }, 6 "age" : 18 7 }; 8 var output = Mustache.render( 9 "name:{{name.first}} {{name.last}},age:{{age}}", data); 10 console.log(output);
結果:name:Chen Jackson,age:18
4.{{#param}}這個標簽很強大,有if判斷、forEach的功能。
1 var data = { 2 "nothin":true 3 }; 4 var output = Mustache.render( 5 "Shown.{{#nothin}}Never shown!{{/nothin}}", data); 6 console.log(output);
如果nothin是空或者null,或者是false都會輸出Shown.相反則是Shown.Never shown!。
5.迭代
1 var data = { 2 "stooges" : [ { 3 "name" : "Moe" 4 }, { 5 "name" : "Larry" 6 }, { 7 "name" : "Curly" 8 } ] 9 }; 10 var output = Mustache.render("{{#stooges}}<b>{{name}}</b>{{/stooges}}", 11 data); 12 console.log(output);
輸出:<b>Moe</b>
<b>Larry</b>
<b>Curly</b>
6.如果迭代的是數組,還可以用{{.}}來替代每個元素
1 var data = { 2 "musketeers" : [ "Athos", "Aramis", "Porthos", "D'Artagnan" ] 3 }; 4 var output = Mustache.render("{{#musketeers}}* {{&.}}{{/musketeers}}", 5 data); 6 console.log(output);
輸出:* Athos
* Aramis
* Porthos
* D'Artagnan
7.迭代輸出的還可以是一個function返回的結果,function可以讀取當前變量的上下文來獲取其他屬性執行其他操作
1 var data = { 2 "beatles" : [ { 3 "firstName" : "John", 4 "lastName" : "Lennon" 5 }, { 6 "firstName" : "Paul", 7 "lastName" : "McCartney" 8 }, { 9 "firstName" : "George", 10 "lastName" : "Harrison" 11 }, { 12 "firstName" : "Ringo", 13 "lastName" : "Starr" 14 } ], 15 "name" : function() { 16 return this.firstName + " " + this.lastName; 17 } 18 }; 19 var output = Mustache 20 .render("{{#beatles}} *{{name}}{{/beatles}}", data); 21 console.log(output);
輸出: *John Lennon
*Paul McCartney
*George Harrison
*Ringo Starr
8:方法里面可以再執行變量中的表達式
1 var data = { 2 "name" : "{{age}}" + "Tater", 3 "bold" : function() { 4 return function(text, render) { 5 console.log(text); 6 return "<b>" + render(text) + "</b>"; 7 }; 8 }, 9 "age" : 18 10 }; 11 var output = Mustache.render("{{#bold}}Hi {{name}}.{{/bold}}", data); 12 console.log(output);
輸出結果:
9.{{^}}與{{#}}相反,如果變量是null、undefined、
false、和空數組講輸出結果
10.{{! }}注釋