我喜欢胡子式模板语言的最小化 - 我目前正在使用mustache和icanhasmustache,但我还检查了handlebars和hogan。
但是,我需要一个'extends'类型的功能,以允许子进程引用特定的父模板。我找不到关于如何在上面的任何一个中实现扩展的文档,但我已经看到(来自随机githib gists)其他人似乎正在这样做。
注意:我知道包含(有时称为部分)的存在,但这些似乎是父母引用特定的孩子。这与我正在寻找的相反 - 在这种情况下,儿童模板是真正的“基础”文件,父母只是偶然的,所以我希望孩子控制这种关系。
答案 0 :(得分:8)
2016年回答:
如果您正在使用express,则布局中间件采用layout
选项,您可能会发现它很有用。
res.render('page', { layout: 'mylayout.jade' })
原始答案:很少有JS库实现'扩展'类型的功能。
我决定使用Dust.JS,因为它使用类似胡子的部分,可以在客户端和服务器上运行,并且支持覆盖来自子级的父级的块,从而提供有效的扩展支持。
请参阅灰尘文档“块和内联部分”部分:
{>base_template/}
{<title}
Child Title
{/title}
{<main}
Child Content
{/main}
从父模板覆盖'title'和'main'部分,保留周围的内容。
答案 1 :(得分:5)
我正在研究Nunjucks,它承诺解决一些问题并支持继承。
编辑:
我确实收养了Nunjucks,到目前为止它非常稳固。我遇到的一个限制是你不能指定多个文件夹进行预编译,但我写了一个允许它的脚本。
答案 2 :(得分:2)
请参阅最近的提交:Hogan 3. Add template inheritance...