2014-01-21 27 views
11

我試圖通過構建一個使用canvas來繪製用戶數據的小型web應用程序來學習jade/express。Jade模板,擴展模板後添加到頭部

目前,我只是將一個Jade模板放在一起,我擴展了以前的模板(我稱之爲layout.jade),其中包含幾乎所有頁面上使用的常規資源。

我的問題是,我想要擴展模板,然後將頭部的部分僅限於該頁面而不是其他部分。我一直在玩它一段時間和研究,但無法找到它的具體信息。

這裏就是我有

layout.jade 
!!! 5 
html 
    head 
     title EZgraph 
     link(rel='stylesheet', href='bootstrap/css/bootstrap.min.css') 
     link(rel='stylesheet', href='stylesheets/ezgraph.css') 
    body 
    block content 
    block scripts 

這裏還有我的工作

extends layout 

head 
    link(rel='stylesheet', href='stylesheets/barchartentry.css') 

是否有可能做這樣的事情的模板?直覺上,我覺得它應該是,但我只是錯過了這樣做的機制。

回答

22

我在本週的一個截屏視頻系列劇中進入了這個話題。這裏有一個鏈接:http://www.learnallthenodes.com/episodes/10-more-advanced-jade

但是,如果您寧願只是有答案,請繼續閱讀。您可以在模板文件中使用多個塊。在你的情況,你可能會使layout.jade是這個樣子:

layout.jade 
!!! 5 
html 
    head 
     title EZgraph 
     link(rel='stylesheet', href='bootstrap/css/bootstrap.min.css') 
     link(rel='stylesheet', href='stylesheets/ezgraph.css') 
     block extraHeader 
    body 
     block content 
     block scripts 

然後你的模板文件:

extends layout 

block extraHeader 
    link(rel='stylesheet', href='stylesheets/barchartentry.css') 

注意佈局和模板都匹配extraHeader塊調用。這應該讓你去。

如果您需要在同一個呈現中將內容添加到來自多個模板文件的extraHeader中,則可以使用block append extraHeader或更簡潔的append extraHeader。如果您希望額外的內容出現在開頭,還有一個prepend變體。

編輯:修正了一些縮進。此外,我縮進了block contentblock scripts,以便他們成爲body的子女。最後,即使block extraHeader在每次調用佈局時都會出現,除非您的模板會將其內容放入該佈局,否則它不會注入符合您要求的其他任何內容,因爲我瞭解它們。

+2

非常感謝您的時間和幫助。我會檢查你的截屏,如果你是這樣的主題,我可能會學到很多! – Eogcloud

+0

謝謝你,這真的很有幫助。 (但你應該得到一個更好的麥克風;)) – user3787706

+1

@ user3787706 - 呃,是的,當時我以爲我應該說我的麥克風的頂部,事實證明它應該是前面。菜鳥錯誤* facepalm *。很高興它是有用的。 :) – juanpaco