介绍

Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的HTML文档。

著名的mediawiki 魔术字原理也是mustache

使用

mediawiki不用知道如何去调试,但是还是放在这里,一些基本命令

mustache <YAML> <FILE>

mustache --compile <FILE>

mustache --tokens <FILE>

开始第一次尝试

本文章参考自官方文档见我

The command processes a Mustache template preceded by YAML frontmatter from standard input and prints one or more documents to standard output

该命令处理标准输入中前面带有 YAML frontmatter 的 Mustache 模板,并将一个或多个文档打印到标准输出

YAML frontmatter begins with on a single line, followed by YAML, ending with another on a single line e.g.

YAML frontmatter 以单行开头,后面是 YAML,最后以单行结尾,例如:

1
2
3
---
names: [ {name: chris}, {name: mark}, {name: scott} ]
---

If you are unfamiliar with YAML, it is a superset of JSON. Valid JSON should work fine.

如果您不熟悉 YAML,它是 JSON 的超集。 有效的 JSON 应该可以正常工作。

After the frontmatter should come any valid Mustache template

在 frontmatter 之后应该是任何有效的 Mustache 模板。

例如:

1
2
3
{{#names}}
Hi {{name}}!
{{/names}}

现在让我们将它们结合起来。

将上面的yaml存在data.yml,再将上面的mustache存在template.mustache,执行mustache data.yml template.mustache,输出:

1
2
3
Hi chris!
Hi mark!
Hi scott!

If you provide multiple YAML documents (as delimited by ), your template will be rendered multiple times. Like a mail merge.

如果您提供多个 YAML 文档(由 分隔),您的模板将被渲染多次。 就像邮件合并一样……

例如将以下代码存在 data.yml

1
2
3
4
5
6
7
---
name: chris
---
name: mark
---
name: scott
---

在 template.mustache写入:

1
Hi {{name}}!

执行mustache data.yml template.mustache你会得到

1
2
3
Hi chris!
Hi mark!
Hi scott!