原文地址:http://www.cnblogs.com/flypig88/archive/2012/05/14/2497780.html

看了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.

去掉"&"的结果是转义为:&lt;br&gt;Willy&lt;br&gt; 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);

输出结果:

Hi {{age}}Tater.
<b>Hi 18Tater.</b>

9.{{^}}与{{#}}相反,如果变量是null、undefined、 false、和空数组讲输出结果

10.{{!  }}注释

Mustache.js语法学习笔记的更多相关文章

  1. JS语法学习笔记

    JS语法: JS知识点一览图 JS知识点一览图 在function中写this,在本function中可以显示,写Person则显示undefined. 在function中写Person,在func ...

  2. JS语法学习笔记-菜鸟教程

    现在只需要<script></script>标签 javascript通常做法是放在<head>部分中,或者放在页面底部,这样可以把他们安置在同一位置,不会干扰页面 ...

  3. js再学习笔记

    #js再学习笔记 ##基本 1.js严格区分大小写   2.js末尾的分号可加,也可不加   3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...

  4. 毕业设计 之 五 PHP语法学习笔记

    毕业设计 之 四 PHP语法学习笔记 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 说明:该笔记是对网站编程语言的详细学习 一.PHP基础 0. 关于环境 ...

  5. Golang 语法学习笔记

    Golang 语法学习笔记 包.变量和函数. 包 每个 Go 程序都是由包组成的. 程序运行的入口是包 main. 包名与导入路径的最后一个目录一致."math/rand" 包由 ...

  6. JS数组学习笔记

    原文:JS数组学习笔记 最近在备课数组,发现很多ES5的方法平时很少用到.细节比较多,自己做了大量例子和整理,希望对大家了解JavaScript中的Array有所帮助. 概念 数组是值的有序集合.每个 ...

  7. MarkDown语法 学习笔记 效果源码对照

    MarkDown基本语法学习笔记 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 下面将对Markdown的基本使用做一个介绍 目 ...

  8. doy05循环语法学习笔记

    doy05循环语法学习笔记 一.while循环语法: 1.基本用法示例 x = 1 while x <= 5: print(x) x += 1 2.死循环:永远不结束的循环 如:while Tr ...

  9. 两万字Vue.js基础学习笔记

    Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...

随机推荐

  1. Android(java)学习笔记225:Activity 4 种启动模式

    1. 任务栈(task stack): 任务栈 是用来记录用户操作的行为,维护一个用户体验. 一个应用程序一般都是由多个activity组成的. 任务栈(task stack)记录存放用户开启的act ...

  2. Android中SQLite使用

    现在的主流移动设备像Android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上 ...

  3. codevs1955光纤通信(并查集)

    /* 第一眼以为就是个区间覆盖 然后敲完提交60分0.0 然而觉得自己的做法很对 以为数据错了 后来发现XXX他的牛棚是一圈(牛过得挺好的啊 还能赏湖...) 然后枚举断开的点 可惜n=750 p=1 ...

  4. VB编程技巧推荐

    VB编程技巧推荐   1.zyl910的专栏——理论水平高 用VB写高效的图像处理程序 V2.0 优化分支代码——避免跳转指令堵塞流水线 2.Laviewpbt的专栏 —— 有很多算法的代码,实用性高 ...

  5. Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库

    前提是您必须拥有Windows Azure的账号,如果没有的话,可以去Windows Azure 中国区网站申请免费试用账号.哈哈,我就是第一批申请的试用账号,感觉自己挺幸运的.申请的过程就不写了,请 ...

  6. MIME协议

    转:http://blog.csdn.net/flfna/article/details/5048290 MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候 ...

  7. Access数据库数据转换Table.Json

    使用WPF组件 xaml <Window x:Class="JsonConvert.MainWindow" xmlns="http://schemas.micros ...

  8. 详解Linux服务器最大tcp连接数

    网络编程在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接.那么对单机,其最大并发tcp连接数是多少? 如何标识一个TCP连接在确定最大连接数之 ...

  9. JavaScript--模拟网络爬虫

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. poj3620

    #include<iostream>#include<string>#include<stack>#include<vector>#include< ...