我有layout.jade,其中包含#header #main #footer
,#main
包含#content
和#sidebar
,如果我这样做,我的模板主体会转到#content
{ {1}},
但是现在有些页面很特殊,只想继承res.rend('template')
而模板正文应该转到#header #main #footer
,我怎样才能在expressjs中执行此操作,我的模板引擎是jade。
答案 0 :(得分:1)
如果您希望为任何视图设置特殊的布局模板,只需使用布局值以及新模板布局的名称和位置调用de template render。
res.render('page', { layout: 'mylayout' });
这将使用mylayout为#header,#footer和其他内容呈现页面布局的内容。
答案 1 :(得分:1)
Jade允许您替换(默认),前置或附加块。例如,假设您希望在每个页面上使用“head”块中的默认脚本,您可以这样做:
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')
答案 2 :(得分:0)
我想我会查看部分内容并整理您的模板,以便更换可以更改的内部部分。