2011-05-25 107 views
0

我已經layout.jade,其中包含#header #main #footer的一部分,#main包含#content#sidebar,我的模板的身體去#content如果我這樣做res.rend('template')expressjs:如何擴展布局

但現在有些頁面是特殊的,它只想繼承#header #main #footer,模板體應該去#main,我怎麼能在expressjs中做到這一點,我的模板引擎是玉。

回答

1

如果您希望爲您只需要來電德模板與佈局的新模板佈局的值的名稱和位置提供任何視圖一個特殊的佈局模板。

res.render('page', { layout: 'mylayout' }); 

這將使用mylayout爲#header,#footer和其他東西渲染頁面佈局的內容。

+0

我想重用「mylayout」佈局'一樣,它包含用戶信息的鏈接和頁腳鏈接頭的一部分。 – 2011-05-25 07:49:15

+0

@guilin然後將'layout'分成許多部分 – Raynos 2011-05-25 08:05:49

0

Jade允許您替換(默認),前置或追加塊。假設比如你有一個「頭」塊,你想利用每一頁上默認腳本,你可以這樣做:

html 
head 
    block head 
    script(src='/vendor/jquery.js') 
    script(src='/vendor/caustic.js') 
body 
    block content 

現在,假設你有你的應用程序的頁面的JavaScript的遊戲,你想一些遊戲相關的腳本以及這些默認值,你可以簡單地追加塊:

extends layout 

append head 
    script(src='/vendor/three.js') 
    script(src='/game.js')