0

私は通常、サーバーでルートを管理するために次のコードを使用します。

WebApp.connectHandlers.stack.splice(0, 0, {
    route: '...',
    handle: function(req, res, next) {...},
});

ただし、いくつかの場所で別のパターンを見てきました。

WebApp.connectHandlers.use(function(req, res, next) {
    ...
});

構文とルート管理以外に、それらの違いは何ですか? パフォーマンスやその他の理由により、どちらを使用する方が良いですか?

4

1 に答える 1

3

ミドルウェアが機能する方法は、一種のリストを使用してから応答を処理することです。だからあなたが持っているなら

WebApp.connectHandlers.use(function(req, res, next) {
    ...
});

ここで応答が終わらない場合はnext()、スタック内で実行する次の接続ハンドラーが呼び出されて検索され、何もない場合は次の接続ハンドラーが呼び出されます。

これには少し順序があるため、最初に記述したメソッドはスタックの先頭 (または splice で指定されたインデックス) に何かを追加し、2 番目のメソッドはそれをスタックの末尾に追加します。

reqしたがって、Meteor では、他のミドルウェアに依存します。他のハンドラーの前に&値にアクセスしたい場合resは、最初のもの (たとえば、ある種の HTTP ログイン チェック/Websocket リクエストのアップグレード) を使用し、他.useのものを他のものに使用できます。スタックの最後 (IP アドレス/Cookie チェック)

ただし、この Meteor がミドルウェアも使用している可能性については 100% 確信が持てないため、Meteor が使用する前にスタックにアクセスする必要があるため、特に meteor がリクエストで終了する場合は最初の構文の方が優れている可能性があります。最後に追加しても効果がない場合があります。

于 2013-10-02T11:52:17.107 に答える