Node.js app.locals和res.locals生命周期

Node.js app.locals和res.locals生命周期,node.js,express,Node.js,Express,我真的被app.locals和res.locals搞糊涂了,因为我不知道什么时候该用,怎么用?实际上我想知道app.locals和res.locals的生命周期 例如,我应该在哪里保存我的用户(经过身份验证的用户)详细信息(用户名、角色等)?在 App.Loals或代码> RES.Loals 可以考虑 App. Loopals/Cuth>是全局的。您可能希望存储在app.locals中的一些示例:URL帮助程序、应用程序级常量。您应该在这里放置任何您希望在每个视图中都可以访问的内容 res.lo

我真的被
app.locals
res.locals
搞糊涂了,因为我不知道什么时候该用,怎么用?实际上我想知道
app.locals
res.locals
的生命周期


例如,我应该在哪里保存我的用户(经过身份验证的用户)详细信息(用户名、角色等)?在<代码> App.Loals<代码>或代码> RES.Loals

可以考虑<代码> App. Loopals/Cuth>是全局的。您可能希望存储在

app.locals
中的一些示例:URL帮助程序、应用程序级常量。您应该在这里放置任何您希望在每个视图中都可以访问的内容

res.locals
仅存储特定响应(响应特定请求)的数据。例如,GET/something将创建一个新的res.locals,该res.locals将通过响应“/something”的所有中间件传递。这里适当的信息是来自您的问题的经过身份验证的用户详细信息

生命周期是这样的,您的职责是粗体的(其他一切都由express为您完成):

  • 应用程序已创建(var app=express();)
  • 创建app.locals
  • 请求到达
  • 为该请求创建res.locals
  • 您可以向res.locals添加一些东西,比如用户角色(res.locals.role='admin';)
  • 您为请求提供响应(res.render('some/view');)
  • 该请求的res.locals已被垃圾收集,已消失
  • 只要应用存在,app.locals就会继续存在

  • 如何在客户端上使用res.locals.role?角色值是否像其他数据一样使用{{role}}访问?