【问题标题】:Node.js / Express make variable available in layout on all routesNode.js / Express 使变量在所有路由的布局中可用
【发布时间】:2012-04-24 02:10:21
【问题描述】:

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

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

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

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

我还是一个 Node 新手,如果这是一个愚蠢的问题,我深表歉意。

【问题讨论】:

    标签: node.js express


    【解决方案1】:

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

    所以,在 app.js 中:

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

    在您的模板中:

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

    【讨论】:

    • 'app.dynamicHelpers' 似乎在 express v3 中已被弃用,取而代之的是 'app.use'
    • 对于像我这样几年后会偶然发现这个答案的人来说,这是您需要查看的内容:stackoverflow.com/questions/11580796/…
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2022-08-04
    • 2016-08-25
    • 1970-01-01
    • 2018-09-10
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多