模板语言参考

模板语言是通过利用“替换”、“过滤”和“重利用”来减少内容生成中的重复工作的技术。

变量替换

mustache.js

{{ name }} -> 经过HTML转义的文本

{{{ name }}}{{& name }} -> 未经过HTML转义的文本

name 可以是变量也可以是函数,如果是函数,则执行并取其返回值

块替换

一般叫block,mustache里称为section,其功能定位也不同于其它模板语言。

mustache.js

{{# name }}
...
{{/ name }}

包含了以下功能:

  • 条件替换,如果 name 是假值或空数组,不显示块的内容

  • 循环,如果 name 是非空数组,其每个成员都产生一个同样结构的替换块

  • 过滤,如果 name 是函数,会过滤块中的内容

  • 如果 name 是对象,提供子上下文,在 name 是数组的情况下,数组中的每个对象成员也会成为这次循环的子上下文。

    上下文是一种名空间,mustache在上下文里查找一个名字对应的内容,如果找不到,则到父上下文里查找,最多回溯到根上下文。

{{^ name }}
...
{{/ name }}

作为上述条件替换的补充,仅当 name 是假值或空数组时,显示块的内容。

子模板

mustache.js

{{> name }} -> 插入 name 代表的模板对象在当前上下文中实例化的结果。

mustache 非常节省,跨模板的引用必须通过程序解决,因此也不能提供继承功能(无法确定被继承的模板在哪里)。

其它

mustache.js

{{! ... }} -> 注释

{{=xx yy=}} -> 将左右分隔符分别替换为 xxyy