app.locals和res.locals的生命周期

25

我对app.localsres.locals很困惑,因为我不知道什么时候该使用它们以及如何使用它们?实际上,我想知道app.localsres.locals的生命周期。

例如,我的用户(已验证的用户)详细信息(用户名、角色等)应该保存在哪里?是在app.locals还是res.locals中?

1个回答

70
您可以将app.locals视为全局的。一些您可能想要存储在app.locals中的东西包括:URL帮助程序、应用程序级别的常量等。您应该将任何您希望在每个视图中访问的信息都放在这里。 res.locals仅为特定响应(响应特定请求)存储数据。例如,GET /something将创建一个新的res.locals,并通过响应“/something”的所有中间件传递。适当的信息包括来自您问题的经过身份验证的用户详细信息。
生命周期如下,其中您的责任已加粗(其他所有内容都由Express为您完成):
  1. 创建app(var app = express();)
  2. 创建app.locals
  3. 请求到达
  4. 为该请求创建res.locals
  5. 向res.locals添加用户角色等内容(res.locals.role = 'admin';)
  6. 对该请求提供响应(res.render('some/view');)
  7. 该请求的res.locals被垃圾回收清除
  8. 只要应用程序存在,app.locals就会继续存在

1
你如何在客户端使用 res.locals.role?角色值是否像其他数据一样通过 {{role}} 访问? - ChrisP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接