
视图模板——使用
Handlebars
|
73
正是因为这样的操作顺序,你才能把一个叫
body
的属性传入视图,使其被正
确渲染。然而,到了渲染布局的时候,
body
的值就被渲染后的视图覆盖了。
7.4.5
在
Express
中使用
(
或不使用
)
布局
很可能大部分(即使不是全部)页面需要使用同一个布局,所以每次渲染视图都指定这个
布局没什么意义。你会注意到,我们在创建视图引擎的时候,指定了默认布局的名字:
app.engine('handlebars', expressHandlebars({
defaultLayout: 'main',
})
如果没有特别设置,
Express
会在
views
子目录下查找视图,在
views/layouts
下查找布局。
所以如果有一个视图
views/foo.handlebars
,你可以这样渲染:
app.get('/foo', (req, res) => res.render('foo'))
它会使用
views/layouts/main.handlebars
作为布局。如果根本不想使用布局(意味着你的视
图会包含所有的页面框架代码),可以在上下文对象中指定
ayout: null
:
app.get('/foo', (req, res) => res.render('foo', { layout: null }))
或者,如果想使用一个不同的模板,可以指定模板名:
app.get('/foo', (req, res) => res.render('foo', { layout: 'microsite' ...