我是否需要在nodejs中的每个get调用中发送公共变量?

时间:2015-06-29 11:03:46

标签: node.js express

我的快递项目中有很多页面。导航(发生在所有页面中)包含用户的姓名(如果他们已登录)。我是否需要每次都将用户变量传递给每个页面,还是有更好的方法来执行此操作? 例如:

router.get('/', function(req, res) {
  res.render('index', { title: 'Index!', user: req.user });
});

router.get('/helloworld', function(req, res) {
  res.render('helloworld', { title: 'Hello World!', user: req.user });
});
...

1 个答案:

答案 0 :(得分:2)

正如@robertklep在评论中已经提到的那样,我会稍微扩展一下。

app.locals为所有请求设置变量。您可以在路由器外部进行设置。这通常用于设置站点范围的变量,例如站点的标题。

app.locals.title = 'My Site'

然后有res.locals用于设置特定请求的变量。一个例子是设置用户对象。

res.locals实际上超越了app.locals,如果在两者上找到属性,那么res.locals上的属性优先。例如,您可以拥有一个站点范围的标题,然后是特定路径的特定标题。

app.locals.title = 'My Site'
app.get('/index' function(req, res, next){
    res.locals.title = 'Index | ' + app.locals.title;
    ...
});