Node.js / Express使布局中的variables在所有路由中可用

一旦用户login,我想要显示他们的用户名在标题,这是目前的一部分layout.jade 。 他们的细节在req.currentUser但是req不能从布局访问。

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

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

但似乎必须有一个更好的方法,而不是把每一个路由添加到locals

我还是一个Node新手,所以如果这是一个愚蠢的问题,我很抱歉。

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

所以,在app.js中:

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

并在您的模板中:

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