4

我喜欢 mustache 样式模板语言的极简主义——我目前正在使用mustache和 icanhasmustache,但我也检查了handlebarshogan

但是,我需要“扩展”类型的功能,以允许孩子引用特定的父模板。我找不到关于如何在上述任何内容中实现扩展的文档,但我已经看到(来自随机 githib gists)其他人似乎正在这样做。

注意:我知道包含(有时称为部分)的存在,但是这些似乎是为了让父母引用特定的孩子。这与我正在寻找的相反 - 在这种情况下,子模板是真正的“基础”文档,父级只是偶然的,所以我希望孩子控制关系。

4

3 回答 3

8

2016年回答

如果您使用的是 express,则布局中间件会采用一个layout您可能会觉得有用的选项。

res.render('page', { layout: 'mylayout.jade' })

原始答案:很少有 JS 库实现“扩展”类型的功能。

  • 修女很像小胡子,但仅限服务器(不再维护)
  • Swig有扩展,但不是很像小胡子。
  • Jade可以在浏览器中扩展和工作,但不像小胡子

我选择了Dust.JS,因为它使用类似小胡子的部分,在客户端和服务器上工作,并支持从子级覆盖父级块,提供有效的扩展支持。

请参阅灰尘文档,“块和内联部分”部分:

{>base_template/}
{<title}
  Child Title
{/title}
{<main}
  Child Content
{/main}

覆盖父模板中的“标题”和“主要”部分,保留周围的内容。

于 2012-03-13T22:02:41.120 回答
5

我正在研究 Nunjucks,它承诺解决一些问题并支持继承。

编辑:

我确实采用了 Nunjucks,到目前为止它非常可靠。我遇到的一个限制是您不能指定多个文件夹进行预编译,但我编写了一个脚本来允许它。

于 2013-04-24T02:38:55.993 回答
2

Twitter 的 Mustache 实现,Hogan,现在似乎支持继承。

请参阅最近的提交:Hogan 3. 添加模板继承...

于 2012-04-18T19:43:49.527 回答