mustache语法

mustache 模板,用于构造html页面内容。在实际工作中,当同一个模板中想要调用不同的函数来渲染画面,在已经自定义好了的前提下,可以在渲染页面时对传入的参数进行手动判断。【在不好判断的情况下,我们可以通过改变传入参数来进行判断】跟小白我来看看该模板的语法吧。
 

Mustache 的模板语法很简单,就那么几个:

1
2
3
4
5
6
7
{{data}}
{{#data}} {{/data}}
{{^data}} {{/data}}
{{.}}
{{<partials}}
{{{data}}}
{{!comments}}

借助 Demo 来对语法做简单的介绍:

 1 ...
2 <script type="text/javascript" src="mustache.js"></script>
3 <script type="text/javascript">
4 var data = {
5 "name": " xiaohua ",
6 "msg": {
7 "sex": " female ",
8 "age": " 22 ",
9 "hobit": " reading "
10 },
11 "subject": ["Ch","En","Math","physics"]
12 }
13
14 var tpl = '<p> {{name}}</p>';
15 var html = Mustache.render(tpl, data);
16
17  alert ( html );
18 </script>
19 ...

{{data}}

{{}}就是 Mustache 的标示符,花括号里的 data 表示键名,这句的作用是直接输出与键名匹配的键值,例如:

1 var tpl = '{{name}}';
2 var html = Mustache.render(tpl, data);
3 //输出:
4 xiaohua

{{#data}} {{/data}}

#开始、以/结束表示区块,它会根据当前上下文中的键值来对区块进行一次或多次渲染,例如改写下 Demo 中的 tpl:

1 var tpl = '{{#msg}} <p>{{sex}},{{age}},{{hobit}}</p> {{/msg}}';
2 var html = Mustache.render(tpl, data);
3
4 //输出:
5 <p> female, 22, reading</p>

注意:如果{{#data}} {{/data}}中的 data 值为 null, undefined, false;则不渲染输出任何内容。

{{^data}} {{/data}}

该语法与{{#data}} {{/data}}类似,不同在于它是当 data值为 null, undefined, false 时才渲染输出该区块内容。

1 var tpl = {{^nothing}}没找到 nothing 键名就会渲染这段{{/nothing}};
2 var html = Mustache.render(tpl, data);
3 //输出:
4 没找到 nothing 键名就会渲染这段

{{.}}

{{.}}表示枚举,可以循环输出整个数组,例如:

1 var tpl = '{{#subject}} <p>{{.}}</p> {{/subject}}';
2 var html = Mustache.render(tpl, data);
3 //输出:
4 <p>Ch</p> <p>En</p> <p>Math</p> <p>physics</p>

{{>partials}}

>开始表示子模块,如{{> msg}};当结构比较复杂时,我们可以使用该语法将复杂的结构拆分成几个小的子模块,例如:

 1 var tpl = "<h1>{{namme}}</h1> <ul>{{>msg}}</ul>"
2 var partials = {msg: "{{#msg}}<li>{{sex}}</li><li>{{age}}</li><li>{{hobit}}</li>{{/msg}
3 var html = Mustache.render(tpl, data, partials);
4 //输出:
5 <h1>xiaohua</h1>
6 <ul>
7 <li>female</li>
8 <li>22</li>
9 <li>reading</li>
10 </ul>

{{{data}}}

{{data}}输出会将等特殊字符转译,如果想保持内容原样输出可以使用{{{}}},例如:

1 var tpl = '{{#msg}} <p>{{{age}}}</p> {{/msg}}'
2 //输出:
3 <p>22</p>

{{!comments}}

!表示注释,注释后不会渲染输出任何内容。

1 {{!这里是注释}}
2 //输出:

在工作中,如果页面上的内容是从后台获取数据并渲染到页面上时,我们就可以使用mustache模板了,值得注意的是,render的数据一定要与键名相符合。

1
<br><br><br><br>

mustache语法 转自小花大方的更多相关文章

  1. 微信小程序技术分析:Mustache语法要点总结

    小程序开发的wxml里,用到了Mustache语法.所以,非常有必要把Mustache研究下. 什么是Mustache?Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户 ...

  2. 微信小程序入门——Mustache语法学习

    微信小程序中用到了大量Mustache语法,特发此文学习一下 1.简单的变量调换:{{name}} 1 var data = { "name": "Willy" ...

  3. 微信小程序Mustache语法

    小程序开发的wxml里,用到了Mustache语法.所以,非常有必要把Mustache研究下. 什么是Mustache?Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户 ...

  4. 微信小程序 Mustache语法详解

    最近微信小程序非常火,对于前端开发的程序员是个利好的消息,这里主要记录下微信小程序  Mustache语法. 小程序开发的wxml里,用到了Mustache语法.所以,非常有必要把Mustache研究 ...

  5. Vue mustache语法

    mustache语法 Vue中的插值语法mustache本意为胡子,可能是{{}}长得像胡子吧. 下面是对mustache插值语法一个最简单的使用. 被管理元素会通过data属性拿到其中的数据对象. ...

  6. mustache语法

    mustache 模板,用于构造html页面内容.在实际工作中,当同一个模板中想要调用不同的函数来渲染画面,在已经自定义好了的前提下,可以在渲染页面时对传入的参数进行手动判断.  以下是学习笔记内容: ...

  7. Vue入门笔记#数据绑定语法

    #数据绑定语法# #文本: 数据绑定的基础表型形式,使用“Mustache”语法(双大括号)(特意查了一下Mustache同“moustache”释义为:髭:上唇的胡子,小胡子,最起码我觉得挺形象的) ...

  8. Vue.2.0.5-模板语法

    Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...

  9. mustache模板技术

    一.简介Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 HTML 文档.当然不同的开发语言有不同模板引擎,如 Javascript 下的 Hog ...

随机推荐

  1. Powershell Deploy Service Fabric Application To Local Cluster

    之前写过一篇用 Powershell 部署 Service Fabric Application 到本地集群的随笔,感觉过程有点复杂,这次将流程简化,只需要将应用程序打包,加上配置文件就可以了.   ...

  2. 十天入门java教程 Day01

    这几年一直在想学一门语言,java,Python,php也都看过,但是没有一门是精的.语言学习并不是写出hello world就行了.个人感觉需要静心去学习. java语言是什么? java是一种计算 ...

  3. 毛玻璃CHBlurEffect

    1.将需要加入毛玻璃的UI控件传入接口即可 1.1 .h文件 // // 文 件 名:CHBlurEffect.h // // 版权所有:Copyright © 2018年 leLight. All ...

  4. LCA SP913 QTREE2 - Query on a tree II

    SP913 QTREE2 - Query on a tree II 给定一棵n个点的树,边具有边权.要求作以下操作: DIST a b 询问点a至点b路径上的边权之和 KTH a b k 询问点a至点 ...

  5. Docker部署MySql应用

    1. MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像 docker images 1.2创建MySQL容器 docker run -di --name piny ...

  6. mysql的时区错误问题

    JDBC连接数据库报错如下: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or r ...

  7. 【论文】CornerNet:几点疑问

    1.cornerpooling的设计,个人觉得解释有些牵强. 这里的两个特征图如何解释,corner点为何是横向与纵向响应最强的点.如果仅仅当成一种奇特的池化方式,恰好也有着不错的效果,那倒是可以接受 ...

  8. day34 协程

    1.   前提 之前我们学习了线程.进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位.按道理来说我们已经算是把cpu的利用率提高很多了.但是我们知道无论是创建多进程还 ...

  9. Linux系统结构及常用命令

    一.系统结构 Linux是一个倒树形结构,最大的目录名叫“/”(根目录) 根目录之下有许多的二级目录,这些目录在系统中都拥有自己不同的功能,如图: 以后的诸多命令的执行和操作都与这些目录相关,现在了解 ...

  10. IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建

    导引 iOS自动化测试一直使用的appium,iOS系统升级至10.0 Xcode8.0之后,改用WebDriverAgent代理服务作为server,编写了一套基于WebDriverAgent服务 ...