25

いつ、どのように使用すればよいのかわからないため、本当に混乱してapp.localsいますか? res.localsそして、実際に知りたいのはapp.localsres.localsライフサイクルです。

たとえば、ユーザー (認証されたユーザー) の詳細 (ユーザー名、役割など) をどこに保存すればよいですか? app.localsまたはres.locals?_

4

1 に答える 1

68

あなたはグローバルであると考えることができますapp.locals。保存したいものの例app.locals:URLヘルパー、アプリケーションレベルの定数。すべてのビューでアクセスできるようにするものはすべてここに配置する必要があります。

res.locals特定の応答(特定の要求に応答する)のデータのみを格納します。たとえば、GET / somethingは、「/something」に応答するすべてのミドルウェアを通過する新しいres.localsを作成します。ここでの適切な情報は、質問からの認証されたユーザーの詳細などです。

ライフサイクルは次のようになります。ここで、あなたの責任は大胆です(他のすべてはエクスプレスによってあなたのために行われます):

  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 に答える