2016-10-11 5 views
1

概念的な観点からみると、ミドルウェアが最終的なミドルウェア(要求タイプの名前にちなんでapp.get、app.postという名前が付けられる)に到達するまでミドルウェアを伝播してから、要求が終了し、応答最終的なミドルウェアの内部から始まります。express req.localsとres.localsの概念的なベストプラクティスは何ですか?

応答オブジェクトが作成されました...応答変数とビューが含まれていますか?

リクエストは、アプリのエントリポイントまたは最終ミドルウェアで終了しますか?

中間ミドルウェアにレスポンスオブジェクトまたはリクエストオブジェクトを構築していますか?

それとも、両方とも並列で処理されていて、実際には関係ありませんか?

これは似たような質問ですが、満足しても答えられません。

req.locals vs. res.locals vs. res.data vs. req.data vs. app.locals in Express middleware

答えて

1

彼らはただ通すべきです。それは深い掘り出し物がないと確信が持てない黒い魔法の一つです。

ここで重要なことは、JavaScriptであるため、(req、res、next)引数からのreqとresは、実際には基礎となるオブジェクトへの参照であるということです。したがって、req = nullを実行した場合、参照を失うだけで、基になるオブジェクトは失われません。 Expressはスタック内の参照を保持し、それらを使ってミドルウェアを呼び出すと思います。その場合、起きているのは、(httpサーバーから)reqとresが最初から存在することだけです。そうしたい場合は、途中の情報のコンテナとして使用できます。おそらく応答は、それらを格納するためのより適切な場所です。何かを上書きすると、すべてを破ることができます。 (すなわち、res.write = nullは死んだアプリケーションになります)。

迷子にならないようにするには、a)テストを試してみてください。b)誰かがそれをやっているかどうかを確認してください。 c)ソースを見る。残念ながら、Expressにはかなりのソースがあります。だからこそa)は良い出発点です。

+0

返信いただきありがとうございます。ベストプラクティスはミドルウェアのpipline全体のすべてのデータにレスポンスオブジェクトを使用しているようです。私には概念的に正しいと感じるだけではありませんが、それはドキュメントや複数の他のポスターが言ったことです。 私はアプリケーションのエントリーポイントでリクエスト 'ends'のように概念化するつもりです。そして、あなたはそのデータを使い、応答オブジェクトを構築しています。 それは意味があり、私はそれに対処することができます。 –

関連する問題