我开始学习Express并且我试图在默认布局中传递变量,每次渲染视图时都会加载,所以我不必通过每次我res.render
时都会出现这种情况,如下所示:
router.get('/', function(req, res, next) {
res.render('home', { title: 'title1', 'isuser':req.user});
});
router.get('/loggedin',function(req,res){
res.render('loggedin', {title: 'title2', 'isuser':req.user});
});
router.get('/register', isLoggedIn, function(req,res)
{
res.render('register', {title: 'title3', 'isuser':req.user});
});
我不希望每次渲染时都传递isuser
,这就是为什么我只想将它传递给我的主布局,以便自动使用这些信息。
默认布局未在代码中显式呈现(使用res.render
),但对所有呈现的视图起到框架作用,并自动加载。在我的情况下,我使用把手,我加载默认布局,在我的主app.js:
app.engine('handlebars', expbhs({defaultLayout:'defaultLayout'}));
答案 0 :(得分:0)
我意识到这个问题已经有几年了,但是我有完全相同的问题。我认为OP正在使用Express-Handlebars(鉴于“ expbhs”的缩写),因此该文档应具有相关性:https://www.npmjs.com/package/express-handlebars#helpers
在创建快速车把的实例时,可以向其传递一些参数,例如defaultLayout和帮助函数列表,以生成要插入模板的数据。
就我而言,我试图在主模板的页脚(显示在每个页面中)中显示当年。像OP一样,我不想将此数据传递到每条路由中。
1.3 in gb.index.values
这会在main.handlebars中显示我写过{{year}}的年份。希望这对其他人有帮助。