0

したがって、Node.js Connect はスタックのように動作し、上から下に向かって実行されることを理解しています。http://howtonode.org/connect-itの作者による Connect の紹介から、次のような例が示されています

var Connect = require('connect');

module.exports = Connect.createServer(
  require('./log-it')(),
  require('./serve-js')()
);

記事は読む

すべてのリクエストはタマネギの外側に入り、それを処理してレスポンスを生成する何かに到達するまで、レイヤーごとにトラバースします。Connect 用語では、これらはフィルターおよびプロバイダーと呼ばれます。レイヤーが応答を提供すると、パスは逆になります。

「レイヤーが応答を提供すると、パスは逆になります」について特に興味があります。それはどのように起こりますか?すべてのミドルウェアが再度呼び出されますが、逆の順序ですか?

4

1 に答える 1

1

いいえ、逆に再度呼び出されることはありませんが、各ミドルウェアには、リクエスト メソッドにモンキー パッチを適用してハイジャックする機会があります。それは理想的ではありません。

// basic logger example
module.exports = function () {
  return function logger(req, res, next) {
    var writeHead = res.writeHead;
    res.writeHead = function (code, headers) {
      console.log(req.method, req.url, code);
      res.writeHead = writeHead;
      return res.writeHead(code, headers);
    };
    next();
  };
};

writeHead がステータス コードを設定する唯一の方法ではないため、このコードには問題があり、すべてのリクエストをキャッチすることはできません。しかし、これはミドルウェアが途中でイベントをキャッチできる基本的な方法です。

于 2013-04-23T13:24:17.173 に答える