我是小胡子的新手。
许多模板语言(例如,Django / Jinja)会让你像这样扩展“父”模板......
基本.html
<html><head></head>
<body>
{% block content %}{% endblock %}
</body>
</html>
首页.html
{% extends "base.html" %}
{% block content %}<h1>Foobar!</h1>{% endblock %}
呈现的 frontpage.html
<html><head></head>
<body>
<h1>Foobar!</h1>
</body>
</html>
我知道小胡子的事partials (e.g., {{>content}}
),但那些似乎只是includes.
Mustache 是否存在模板扩展?或者,如果做不到这一点,是否至少有一些设计模式可以有效地转变includes转换为模板扩展等效项。
我最近发现自己也遇到了同样的情况,只不过我来自灰鲭鲨背景。
Mustache 不允许模板扩展/继承,但据我所知,有一些选项可供您使用。
-
您可以使用部分:
{{>header}}
Hello {{name}}
{{>footer}}
-
您可以将模板预处理函数注入到需要从其他页面继承的每个模板的上下文中:
{{#extendBase}}
Hello {{name}}
{{/extendBase}}
Hash:
{
"name": "Walden",
"extendBase": function() {
return function(text) {
return "<html><head></head>" + render(text) + "</body></html>"
}
}
}
将所需的 HTML 添加到控制器中的相关页面。
-
有一个布局模板ala:
{{>header}}
{{{body}}}
{{>footer}}
并在控制器中渲染主体,将其作为名为的变量传递给布局模板body
.
在加载模板的代码中实现模板继承(pre-mustache)。
然而,我不会使用三重胡子,因为我不希望未转义的 HTML 出现在任何地方,我认为这风险太大。
如果其他人对这个问题有更好的解决方案,我也很想听听,因为我还没有尝试过这些方向中的任何一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)