如何使用jade模板将块附加到父级

时间:2012-11-25 13:17:26

标签: node.js inheritance include append pug

我正在尝试使用jade模板创建模块化布局。我想将一个来自子节点的脚本块添加到其父节点父节点中。我不太确定它是否可能。

这是我的结构

layout.jade

head.jade

index.jade

users.jade

layout.jade:     DOCTYPE     HTML#HTML         包括头

    body
        block content

head.jade:

head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    block scripts

index.jade:

extends layout

block content
    h1 Hello

    include users

users.jade

block append scripts
    script(src='/javascripts/user.js')  

ul
    each user, i in users
        li(class=i+"-"+user) #{user} 

我想要的html输出应该是:

<!DOCTYPE html>
<html id="html">
    <head>
        <title>Index</title>
        <link href="/stylesheets/style.css" rel="stylesheet">
        <script src="/javascripts/user.js">  <!--// append this from user.jade into head.jade //-->
    </head>
    <body>

        <h1>Hello bob</h1>
        <li class="0-user1">user1</li>

2 个答案:

答案 0 :(得分:4)

这应该是可能的,而examples in the jade documentation就是这样做的。您的代码看起来都很好,除非您需要在script中缩进users.jade标记,因此它在block append script指令下方缩进。

答案 1 :(得分:1)

我尝试使用相同的方法来定义制表符控件。 我在单独的玉文件中定义了页面。 每个jade文件都附加了一个包含所包含的标签页的块。 直到我在'index.jade'中的块​​中添加了一些东西,它才起作用,如下所示:

extends layout

append scripts
    //- dummy

block content
    h1 Hello

    include users

但是我还想补充一点,因为我添加了多个.jade文件,我在下面运行。每个文件包括jade-template使用的块附加添加标签页,但是添加页面的顺序是相反的。