用户登录后,我想在 header 中显示他们的用户名,该 header 目前是 layout.jade
的一部分。它们的详细信息在 req.currentUser
中,但无法从布局访问 req
。
我知道我可以为我的 route 的每个 render
调用执行以下操作:
res.render('help', {
locals: { currentUser: req.currentUser }
});
但似乎必须有比将 { currentUser: req.currentUser }
添加到 locals
我的每一条路线更好的方法。
我仍然是 Node 新手,如果这是一个愚蠢的问题,我深表歉意。
最佳答案
您需要使用 dynamic helper
.它是一个传递给 request
和 response
对象的函数,就像任何路由或中间件一样,并且可以返回特定于当前请求的数据。 (包括 session 数据)
所以,在 app.js 中:
app.dynamicHelpers({
currentUser: function (req, res) {
return req.currentUser;
}
});
在你的模板中:
<div><%= currentUser %></div>
关于Node.js/Express 使变量在所有路由的布局中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243125/