什么是<标记为?

时间:2014-04-01 17:58:27

标签: javascript mustache hogan.js

我正在使用twitter Hogan.js Mustache templating language的实现。什么是<标签?

您可以在compiler.js line 341中看到对该标记的引用:

'<': function(node, context) {
      var ctx = {partials: {}, code: '', subs: {}, inPartial: true};
      Hogan.walk(node.nodes, ctx);
      var template = context.partials[createPartial(node, context)];
      template.subs = ctx.subs;
      template.partials = ctx.partials;
    },

本节内容的评论不多,我无法弄明白。

如果我在模板中使用<标记,该怎么做?

1 个答案:

答案 0 :(得分:1)

经过大量谷歌搜索后,我找到了答案,这是一个聪明的模板继承方法(正如我所希望的那样)。

我找到了this issue&amp;随附gist,它解释了问题及其建议的解决方案。看来这个功能已经在hogan.js中实现了,但还不是官方Mustache规范的一部分。

此功能不适用于npm(2.0.0)上当前发布的版本,而是需要使用github上的3.0.0版。版本2只对待<&amp; >同样。


实施例

主模板( template.html ):

<html>
    <head>
        <title>{{$title}}Default Title{{/title}}</title>
    </head>
    <body>
        {{$content}}<p>Default Content</p>{{/content}}
    </body>
</html>

内容模板( content.html ):

{{<template}}
    {{$title}}Override title{{/title}}
    {{$content}}
        <div>
            <h1>Override Content</h1>
        </div>
        {{>anotherPartial}}
    {{/content}}
{{/template}}

现在您需要做的就是渲染 content.html ,它将包含在 template.html 中,如下所示:

<html>
    <head>
        <title>Override title</title>
    </head>
    <body>
        <div>
            <h1>Override Content</h1>
        </div>
        {{>anotherPartial}}
    </body>
</html>

请注意使用$标记替换为content.html中的相同标记。

此功能使得以多种格式呈现视图非常容易,可能适用于不同的设备。它还消除了对动态部分名称的需求(正如许多人想要的那样)。