Handlebars和ExpressJS的多种布局?
如果我使用Handlebars作为Express 4的模板引擎,似乎只有指定一个布局模板的选项才能用于所有视图:
app.engine('hbs', expressHbs({extname:'hbs', defaultLayout:'layout.hbs'}));
如果你的应用需要多个布局呢? 如果viewA.hbs
使用一个布局,而viewB.hbs
需要不同的布局呢?
当我学习nodejs时,我来自PHP Laravel背景,在这个背景下, Blade模板引擎可以指定在每个视图文件的顶部使用哪个布局。 这使得在任何给定视图的布局模板之间切换变得非常简单。
当您调用渲染方法时,您应该能够从路由/控制器传入布局。
router.get('/', function(req, res) { res.render('home', {layout: 'viewBLayout.hbs'}); });
我相当肯定玉可以让你从模板内切换布局,但我不知道你是否可以用把手做到这一点。
如果您使用express-hbs ,则可以在模板中指定一个布局,其注释如下所示:
{{!< layout}}
另外,你可以尝试exphbs 。 它也支持布局注释和多个布局可以嵌套。 (免责声明:我写了。)