Node.js / Express使布局中的variables在所有路由中可用
一旦用户login,我想要显示他们的用户名在标题,这是目前的一部分layout.jade
。 他们的细节在req.currentUser
但是req
不能从布局访问。
我知道我可以为我的路线中的每个render
调用执行以下操作:
res.render('help', { locals: { currentUser: req.currentUser } });
但似乎必须有一个更好的方法,而不是把每一个路由添加到locals
。
我还是一个Node新手,所以如果这是一个愚蠢的问题,我很抱歉。
你需要使用一个dynamic helper
。 它是一个传递request
和response
对象的函数,就像任何路由或中间件一样,可以返回当前请求的特定数据。 (包括会话数据)
所以,在app.js中:
app.dynamicHelpers({ currentUser: function (req, res) { return req.currentUser; } });
并在您的模板中:
<div><%= currentUser %></div>