25

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

例如,我应该在哪里保存我的用户(经过身份验证的用户)详细信息(用户名、角色等)?在app.localsres.locals

4

1 回答 1

68

你可以认为app.locals是全球性的。您可能想要存储的一些示例app.locals:URL 帮助程序、应用程序级常量。您应该在此处放置您希望在每个视图中都可以访问的任何内容。

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

生命周期看起来像这样,您的职责是大胆的(其他一切都由 express 为您完成):

  1. 应用程序已创建 (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 就会继续存在
于 2013-02-01T20:42:36.703 回答