app.locals和res.locals生命周期

时间:2013-02-01 08:58:44

标签: node.js express

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

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

1 个答案:

答案 0 :(得分:57)

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

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

生命周期看起来像这样,你的责任是粗体(其他一切都是通过快递完成的):

  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. 只要应用程序存在,
  9. app.locals就会继续存在