首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mustache模板可以做模板扩展吗?

Mustache模板可以做模板扩展吗?
EN

Stack Overflow用户
提问于 2011-10-28 14:37:34
回答 9查看 28.6K关注 0票数 57

我是新来的小胡子。

许多模板语言(例如,Django /Django)可以让你像这样扩展“父”模板……

base.html

代码语言:javascript
复制
<html><head></head>
    <body>
    {% block content %}{% endblock %}
    </body>
</html>

frontpage.html

代码语言:javascript
复制
{% extends "base.html" %}
{% block content %}<h1>Foobar!</h1>{% endblock %}

渲染的frontpage.html

代码语言:javascript
复制
<html><head></head>
    <body>
    <h1>Foobar!</h1>
    </body>
</html>

我知道Mustache的分音(例如,{{>content}}),但这些似乎只是包含。

是否存在Mustache的模板扩展?或者,如果做不到这一点,是否至少有一些设计模式可以有效地将包含转换为模板扩展等价物。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-11-04 06:05:48

最近,我发现自己也处于同样的境地,除了我来自mako的背景。

Mustache不允许模板扩展/继承,但据我所知,您可以使用一些选项。

  1. ,你可以使用分词:

{{>header}} Hello {{name}} {{>footer}}

  • You可以将模板预处理函数插入到每个需要从其他页面继承的模板的上下文中:

{{#extendBase}}您好{{name}} {{/extendBase}}

哈希:

{ "name":"Walden","extendBase":function() { return function(text) { return "“+ render(text) + "”}

  • 准备并附加所需的超文本标记语言到控制器中的相关页面。

  • 有一个布局模板ala:

{{>页眉}}{body}{{>页脚}}

并在控制器中呈现主体,在加载模板的代码中将其作为名为body.

  • Implement模板继承的变量传递给布局模板。

然而,我不会使用三重胡子,因为我不想让未转义的HTML出现在任何地方,在我看来,这太冒险了。

如果其他人对这个问题有更好的解决方案,我也很乐意听到,因为我还没有尝试过这些方向中的任何一个。

票数 64
EN

Stack Overflow用户

发布于 2012-07-25 03:07:19

我在这里对Mustache的规范提出了如下建议:

https://github.com/mustache/spec/issues/38

目前mustache.java、hogan.js和phly_mustache都支持模板继承。

票数 12
EN

Stack Overflow用户

发布于 2011-11-02 12:20:57

您可以使用包含HTML的变量。像{{{variable}}}这样的“三重胡子”将返回未转义的超文本标记语言。它与模板扩展并不完全相同,但您可以呈现frontpage-content.html,然后将其输出放入传递给base.htmlcontent变量中。

(我在frontpage.html文件名中添加了-content,希望这样的命名模式有助于保持文件名的可管理性。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7925931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档