Express:将变量传递给主布局

时间:2015-12-15 22:45:45

标签: express

我开始学习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'}));

1 个答案:

答案 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}}的年份。希望这对其他人有帮助。