Node.js / Express使所有路径的布局都可用

时间:2011-08-30 12:28:39

标签: node.js express

用户登录后,我想在标题中显示其用户名,该标题目前是layout.jade的一部分。他们的详细信息位于req.currentUser,但无法从布局中访问req

我知道我可以为我的路线中的每个render来电执行以下操作:

res.render('help', {
    locals: { currentUser: req.currentUser }
});

但似乎必须有一种更好的方法,就是将{ currentUser: req.currentUser }添加到locals我的每一条路线中。

我仍然是Node新手,如果这是一个愚蠢的问题,请道歉。

1 个答案:

答案 0 :(得分:8)

您需要使用dynamic helper。它是一个传递requestresponse对象的函数,就像任何路由或中间件一样,并且可以返回特定于当前请求的数据。 (包括会话数据)

所以,在app.js:

app.dynamicHelpers({
  currentUser: function (req, res) {
    return req.currentUser;
  }
});

并在您的模板中:

<div><%= currentUser %></div>