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

标签 node.js express

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

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

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

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

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

最佳答案

您需要使用 dynamic helper .它是一个传递给 requestresponse 对象的函数,就像任何路由或中间件一样,并且可以返回特定于当前请求的数据。 (包括 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/

相关文章:

node.js - 无法运行 mongodb2.4 文本搜索

sql - 使用 sql/sequelize 通过 userId 获取喜欢的帖子并获取帖子的喜欢计数

node.js - 如何为 koajs 服务器做优雅的停止?

javascript - 在 req.body 中使用变量

javascript - 我可以从 "NIL"的 JavaScript 知识开始使用 jQuery(或 Node.js)吗?

node.js - 负载均衡器是否打开所有子服务器的套接字

node.js - 如何跟踪 Messenger 应用程序中的未读消息

node.js - 将未知数量的参数传递给 NodeJS 路由

node.js - 使用 Express.js,如何根据任何请求发送文件?

node.js - 创建快速模板引擎时...如何使用部分?