Jade的Jade模板继承让我发疯...
问题在于我想将大量代码排除在外部模板之外,然后将其包含在内。当我这样做时,一切都得到了f ** up:/
示例代码:
!!!5
html(lang="en")
head
title sample title
body
header
div#someDiv
div#someContent
section#main
我们想说我要排除从顶部到div#someContent
的所有内容。然后我会
include inc/header
section#main
这样代码缩进就出错了,一切都搞砸了:/你能指出我在包含模板的正确方向吗?
提前致谢!
答案 0 :(得分:4)
这不是模板继承,而是包含(模板继承使用块和扩展关键字)。我确实尝试过你的代码,它对include的作用是将“section#main”插入“div#someDiv”而不是“div#someContent”。不确定这是否应该被视为一个错误或什么(解析器如何知道添加的内容是否应该在包含文件的最后一个项目内,或者在同一级别?)。它似乎并不关心“包含”声明下的缩进程度。
但是,如果你使用模板继承,你可以在include的末尾添加一个空块:
!!!5
html(lang="en")
head
title sample title
body
header
div#someDiv
div#someContent
block content
然后,您可以将块附加到实际内容文件中:
include inc/header
block append content
section#main
这在DOM中呈现OK(部分#main在div#someContent内)。根据视图的结构,使用“extends”而不是“include + block append”可能会更好。您可以查看Jade's GitHub doc了解详细信息。