Mustache(轻逻辑模板解析引擎)
简介
Mustache 是一个轻逻辑模板解析引擎(Logic-less templates),它的优势在于可以应用在 Javascript、PHP、Python、Perl 等多种编程语言中。
语法
结合下面的代码理解语法:
14行
<script type="text/javascript" src="mustache.js"></script>
<script type="text/javascript">
var data = {
"company": "Apple",
"address": {
"street": "1 Infinite Loop Cupertino</br>",
"city": "California ",
"state": "CA ",
"zip": "95014 "
},
"product": ["Macbook ","iPhone ","iPod ","iPad "]
}
-
{{KeyName}}:Mustache的标示符,表示一个变量值
-
{{#keyName}} {{/keyName}}:以#开始以/结束,表示一个区块,它会根据上下文中的Mustache变量对区块进行一次货多次渲染。区块可以用来区分变量的作用域,相当于一个if条件判断语句。
6行
var tpl = '{{#address}} <p>{{street}},{{city}},{{state}}</p> {{/address}}';
var html = Mustache.render(tpl, data);
//输出:
<p>1 Infinite Loop Cupertino</br>,California,CA</p>
注意:如果{{#keyName}} {{/keyName}}中的 keyName 值为 null, undefined, false;则不渲染输出任何内容。
-
{{^keyName}} {{/keyName}}:该语法与{{#keyName}} {{/keyName}}类似,不同在于它是当 keyName 值为 null, undefined, false 时才渲染输出该区块内容。
5行
var tpl = {{^nothing}}没找到 nothing 键名就会渲染这段{{/nothing}};
var html = Mustache.render(tpl, data);
//输出:
没找到 nothing 键名就会渲染这段
-
{{.}}:表示枚举,可以循环输出整个数组
5行
var tpl = '{{#product}} <p>{{.}}</p> {{/product}}';
var html = Mustache.render(tpl, data);
//输出:
<p>Macbook </p> <p>iPhone </p> <p>iPod </p> <p>iPad </p>
-
{{{keyName}}}:{{keyName}}输出会将等特殊字符转译,如果想保持内容原样输出可以使用{{{}}},例如:
4行
var tpl = '{{#address}} <p>{{{street}}}</p> {{/address}}'
//输出:
<p>1 Infinite Loop Cupertino</br></p>
-
{{!comments}}:表示注释,注释后不会渲染输出任何内容。