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

Ben*_*eys 8 node.js express

一旦用户登录,我想在标题中显示他们的用户名,这是当前的一部分layout.jade.他们的详细信息在布局中,req.currentUserreq无法访问.

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

res.render('help', {
    locals: { currentUser: req.currentUser }
});
Run Code Online (Sandbox Code Playgroud)

但似乎必须有一个比添加{ currentUser: req.currentUser }locals我的每一条路线更好的方法.

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

Dom*_*nes 8

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

所以,在app.js中:

app.dynamicHelpers({
  currentUser: function (req, res) {
    return req.currentUser;
  }
});
Run Code Online (Sandbox Code Playgroud)

并在您的模板中:

<div><%= currentUser %></div>
Run Code Online (Sandbox Code Playgroud)

  • "app.dynamicHelpers"似乎在快递v3中被弃用,并替换为"app.use" (2认同)
  • 对于像我这样几年后偶然发现这个答案的人,您需要查看以下内容:http://stackoverflow.com/questions/11580796/migrating-express-js-2-to-3-specifically-app -dynamichelpers-to-app-locals-use (2认同)