Node.js 带把手和ExpressJS的多种布局?
如果我将Handlebar用作Express 4的模板引擎,则似乎只有一个选项可以指定一个布局模板用于所有视图:Node.js 带把手和ExpressJS的多种布局?,node.js,express,template-engine,handlebars.js,Node.js,Express,Template Engine,Handlebars.js,如果我将Handlebar用作Express 4的模板引擎,则似乎只有一个选项可以指定一个布局模板用于所有视图: app.engine('hbs', expressHbs({extname:'hbs', defaultLayout:'layout.hbs'})); 如果你的应用需要多个布局怎么办?如果viewA.hbs使用一种布局,而viewB.hbs需要不同的布局,该怎么办 当我学习nodejs时,我来自一个phplaravel背景,在这里,您可以指定在每个视图文件的顶部使用哪个布局。这使得
app.engine('hbs', expressHbs({extname:'hbs', defaultLayout:'layout.hbs'}));
如果你的应用需要多个布局怎么办?如果viewA.hbs
使用一种布局,而viewB.hbs
需要不同的布局,该怎么办
当我学习nodejs时,我来自一个phplaravel背景,在这里,您可以指定在每个视图文件的顶部使用哪个布局。这使得在任何给定视图的布局模板之间切换变得非常简单。调用渲染方法时,您应该能够从路由/控制器传入布局
router.get('/', function(req, res) {
res.render('home', {layout: 'viewBLayout.hbs'});
});
我很确定jade会让你从模板内部切换布局,但我不知道你是否可以用把手来切换布局。如果你使用,你可以在模板中指定一个布局,并给出如下注释:
{{!< layout}}
{{!
或者,你可以试试。它还支持布局注释,可以嵌套多个布局。(免责声明:是我写的。)确保首先在/layouts目录中创建两个名为“main.handlebar”和“backend.handlebar”的文件: 例如,如果需要,请在两条路线上尝试此代码
router.get('/', function(req, res) {
res.render('home', {layout: 'main'});
});
router.get('/backend', function(req, res) {
res.render('home', {layout: 'backend'});
});
谢谢附带问题:为什么会有这么多不同的express Handlebar实现?快车哈佛商学院、快车哈佛商学院、快车哈佛商学院等?很高兴你这么问。我认为我没有资格回答这个问题。但根据我自己的经验,一个充满活力的社区通常是件好事唯一的缺点是项目A实施了伟大的想法1,项目B实施了伟大的想法2。你不可能两者兼得,如果人们只是在一个项目上进行合作,同时包含两个伟大的想法,那会更好。