玉模板继承

时间:2012-01-27 13:53:52

标签: node.js express pug

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

这样代码缩进就出错了,一​​切都搞砸了:/你能指出我在包含模板的正确方向吗?

提前致谢!

1 个答案:

答案 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了解详细信息。