0

Expressjsでリクエストオブジェクトのプロトタイプを拡張したいのですが、このリクエストがどこに定義されているかわかりませんか? http.ServerRequestだと思いますが、その定義も見つかりません。

以下の場合どうするのが正解で...

http.ServerRequest.prototype.redirect = function(path) { }
4

2 に答える 2

1

Express 自体は、 2.* でhttp.IncomingMessage.prototypeこのパターンを使用して、ユーティリティ メソッドを に追加します。

var http = require('http'),
    req = http.IncomingMessage.prototype;

req.foo = function(bar) {
  // Do cool stuff
};

そして3.* のこのパターン:

var http = require('http');

var req = exports = module.exports = {
  __proto__: http.IncomingMessage.prototype
};

ただし、Vadim Baryshev が回答で警告しているように、モンキー パッチには注意が必要です。

于 2012-04-20T23:57:50.033 に答える
0

Connect フレームワークと彼のミドルウェア libsを見てください。すべてのミドルウェアは、作成後にリクエスト オブジェクトとレスポンス オブジェクトを拡張します。コア オブジェクトのプロトタイプを変更することは、他のモジュールで予期しない動作を引き起こす可能性があるため、最善の方法ではありません。

于 2012-04-20T20:32:37.033 に答える