我是新来的小胡子。
许多模板语言(例如,Django /Django)可以让你像这样扩展“父”模板……
base.html
<html><head></head>
<body>
{% block content %}{% endblock %}
</body>
</html>
frontpage.html
{% extends "base.html" %}
{% block content %}<h1>Foobar!</h1>{% endblock %}
渲染的frontpage.html
<html><head></head>
<body>
<h1>Foobar!</h1>
</body>
</html>
我知道Mustache的分音(例如,{{>content}}
),但这些似乎只是包含。
是否存在Mustache的模板扩展?或者,如果做不到这一点,是否至少有一些设计模式可以有效地将包含转换为模板扩展等价物。
发布于 2011-11-04 06:05:48
最近,我发现自己也处于同样的境地,除了我来自mako的背景。
Mustache不允许模板扩展/继承,但据我所知,您可以使用一些选项。
,
{{>header}} Hello {{name}} {{>footer}}
{{#extendBase}}您好{{name}} {{/extendBase}}
哈希:
{ "name":"Walden","extendBase":function() { return function(text) { return "“+ render(text) + "”}
{{>页眉}}{body}{{>页脚}}
并在控制器中呈现主体,在加载模板的代码中将其作为名为body
.
然而,我不会使用三重胡子,因为我不想让未转义的HTML出现在任何地方,在我看来,这太冒险了。
如果其他人对这个问题有更好的解决方案,我也很乐意听到,因为我还没有尝试过这些方向中的任何一个。
发布于 2012-07-25 03:07:19
我在这里对Mustache的规范提出了如下建议:
https://github.com/mustache/spec/issues/38
目前mustache.java、hogan.js和phly_mustache都支持模板继承。
发布于 2011-11-02 12:20:57
您可以使用包含HTML的变量。像{{{variable}}}
这样的“三重胡子”将返回未转义的超文本标记语言。它与模板扩展并不完全相同,但您可以呈现frontpage-content.html,然后将其输出放入传递给base.html的content
变量中。
(我在frontpage.html文件名中添加了-content,希望这样的命名模式有助于保持文件名的可管理性。)
https://stackoverflow.com/questions/7925931
复制相似问题