Mustache是一个Logic-Less模板引擎,即:零逻辑引擎,原因在于它只有标签,没有流程控制语句,这是它与其它模板引擎不同的地方。

Mustache小巧玲珑,几乎用各种语言都实现了一遍。

Mustache的用途

不仅仅用于HTML页面渲染,也可以用于配置文件、XML渲染等各种文本文件。

第一个例子

一个典型的mustache文件如下:

Hello {{name}}
You have just won {{value}} dollars!
{{#in_ca}}
Well, {{taxed_value}} dollars, after taxes.
{{/in_ca}}

给定一个哈希表:

{
"name": "Chris",
"value": 10000,
"taxed_value": 10000 - (10000 * 0.4),
"in_ca": true
}

将会产生如下结果:

Hello Chris
You have just won 10000 dollars!
Well, 6000.0 dollars, after taxes.

Mustache只有5种标签,就是这么简单

变量标签

{{username}}

默认情况下,username中的<等符号会被转义为&lt;

防止转义使用{{&username}}或者使用{{{username}}}

区块标签

{{#sectionVariable}}

这里是区块

{{/sectionVariable}}

区块变量可以取四种数据类型:

1、 false或者空数组:不显示区块内容

2、 非空数组:表示迭代数组中的每一项

Template:

{{#repo}}
<b>{{name}}</b>
{{/repo}}
Hash: {
"repo": [
{ "name": "resque" },
{ "name": "hub" },
{ "name": "rip" }
]
}
Output: <b>resque</b>
<b>hub</b>
<b>rip</b>

如果区块直接是一个字符串列表

View:

{
"musketeers": ["Athos", "Aramis", "Porthos", "D'Artagnan"]
}
Template: {{#musketeers}}
* {{.}}
{{/musketeers}} 结果:
* Athos
* Aramis
* Porthos
* D'Artagnan

3、函数:调用一次函数

Template:

{{#wrapped}}
{{name}} is awesome.
{{/wrapped}}
Hash: {
"name": "Willy",
"wrapped": function() {
return function(text, render) {
return "<b>" + render(text) + "</b>"
}
}
}
Output: <b>Willy is awesome.</b>

4、字典类型:控制上下文

Template:

{{#person?}}
Hi {{name}}!
{{/person?}}
Hash: {
"person?": { "name": "Jon" }
}
Output: Hi Jon!

反转区块标签:用于实现else结构

Template:

{{#repo}}
<b>{{name}}</b>
{{/repo}}
{{^repo}}
No repos :(
{{/repo}}
Hash: {
"repo": []
}
Output: No repos :(

注释标签

{{!这里随便写点注释}}

包含标签

{{>head.mustache}}

Mustache的包含是动态包含,而不是简单地复制粘贴。

我所知道的其它模板引擎

java模板引擎

freemarker

velocity

beetl

smarty4j

httl

各种语言:

mustuche

参考资料

官方文档

Python版

Java版

Mustache模板引擎的更多相关文章

  1. JS模板引擎-Mustache模板引擎使用实例1-表格树

    1 使用实例代码 1.jsp代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <title> ...

  2. nodejs+Express中使用mustache模板引擎

    由于公司一个seo项目,需要我协助.此项目他人已经开发大半,由于seo需要,使用了服务器端模板引擎.我项目的后端同事说项目是go语音写的,跑项目麻烦,只给了我template和css等静态文件. 为了 ...

  3. 前端数据渲染及mustache模板引擎的简单实现

    早期数据渲染的几种方式 在模板引擎没有诞生之前,为了用JS把数据渲染到页面上,诞生了一系列数据渲染的方式. 最最基础的,莫过于直接使用DOM接口创建所有节点. <div id="roo ...

  4. swift 之 mustache模板引擎

    用法: Variable Tags {{name}} 用来渲染值name datas: let data = ["value": "test"] ------- ...

  5. js模板引擎mustache介绍及实例

    在Javascript中 mustache.js是实现mustache模板系统. Mustache是一种没有逻辑的模板语法.它可以应用于HTML.配置文件.源代码等任何地方. 它通过使用散列或对象中提 ...

  6. 【转】在Express项目中使用Handlebars模板引擎

    原文:http://fraserxu.me/2013/09/12/Using-Handlebarsjs-with-Expressjs/ 最近在用Expressjs做一个项目,前后端都用它来完成.自己之 ...

  7. Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整

    Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...

  8. Javascript模板引擎mustache.js详解

    mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...

  9. Mustache.js前端模板引擎源码解读

    mustache是一个很轻的前端模板引擎,因为之前接手的项目用了这个模板引擎,自己就也继续用了一会觉得还不错,最近项目相对没那么忙,于是就抽了点时间看了一下这个的源码.源码很少,也就只有六百多行,所以 ...

随机推荐

  1. IIS HTTP 错误 404.17 - Not Found 解决方法

    错误提示如下图: 出现这种情况的原因通常是因为先安装了Framework,后安装的IIS: 运行cmd,输入:   C:\Windows\Microsoft.NET\Framework\V4.0.30 ...

  2. C/C++ 获取目录下的文件列表信息

    在C/C++编程时,需要获取目录下面的文件列表信息. 1.数据结构 struct dirent {     long d_ino;                 /* inode number 索引 ...

  3. Partition List leetcode java

    题目: Given a linked list and a value x, partition it such that all nodes less than x come before node ...

  4. .NET MVC自定义错误处理页面的方法

    在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...

  5. 关于json与protobuf的材料

    1. https://solicomo.com/network-dev/protobuf-proto3-vs-proto2.html 2.

  6. Unity异步加载场景loading条

    using UnityEngine; using System.Collections; public class LoadingScene : MonoBehaviour { public UISl ...

  7. 把普通java项目转换成maven项目

    我使用的是eclipse,右键项目,Configure->Convert to Maven Project 然后就是jar包的引入了,如果jar包比较简单,建议从maven中拉取,这样便于后期升 ...

  8. 天气预报的Ajax效果

    最近在网站上看了很多显示实时天气预报的,挺实用而且用户体验也不错.对用户的帮助也比较大,用户可以通过你的网站了解到实时的天气信息.感觉比较有意思,于是自己钻研了一下其中的实现方法.于是决定把代码分享给 ...

  9. mv命令(转)

    原文:http://www.cnblogs.com/peida/archive/2012/10/27/2743022.html mv命令是move的缩写,可以用来移动文件或者将文件改名(move (r ...

  10. kafka delete topic

    Don't think it is supported yet. Take a look at this JIRA tracking Delete Topic. For delete manually ...