类似胡子的模板语言有扩展吗?

时间:2012-03-07 10:42:26

标签: javascript mustache client-side-templating hogan.js

我喜欢胡子式模板语言的最小化 - 我目前正在使用mustache和icanhasmustache,但我还检查了handlebarshogan

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

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

3 个答案:

答案 0 :(得分:8)

2016年回答

如果您正在使用express,则布局中间件采用layout选项,您可能会发现它很有用。

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

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

  • Nun非常像小胡子,但仅限服务器(并且不再维护)
  • Swig已经延伸,但不是很像胡子。
  • Jade已在浏览器中扩展并运行,但不是像
  • 那样的小胡子

我决定使用Dust.JS,因为它使用类似胡子的部分,可以在客户端和服务器上运行,并且支持覆盖来自子级的父级的块,从而提供有效的扩展支持。

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

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

从父模板覆盖'title'和'main'部分,保留周围的内容。

答案 1 :(得分:5)

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

编辑:

我确实收养了Nunjucks,到目前为止它非常稳固。我遇到的一个限制是你不能指定多个文件夹进行预编译,但我写了一个允许它的脚本。

答案 2 :(得分:2)

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

请参阅最近的提交:Hogan 3. Add template inheritance...