5

node.jsのレスポンスやリクエストに新しいメソッドを追加したい。

どうすればより効率的に行うことができますか?

これがexpress.jsでどのように行われるか理解できません

4

2 に答える 2

8

JavaScript であるため、これを行う方法は多数あります。Express で最も妥当と思われるパターンは、初期のミドルウェアで各リクエスト インスタンスに関数を追加することです。

//just an example
function getBrowser() {
    return this.get('User-Agent'); 
}

app.use(function (req, res, next) {
  req.getBrowser = getBrowser;
  next();
});

app.get('/', function (req, res) {
    //you can call req.getBrowser() here
});

Express.js では、これは http.IncomingMessage のプロトタイプに追加の機能を追加することによって行われます。

https://github.com/visionmedia/express/blob/5638a4fc624510ad0be27ca2c2a02fcf89c1d334/lib/request.js#L18

これは、「モンキー パッチ」または「フリーダム パッチ」と呼ばれることもあります。これが素晴らしいか恐ろしいかについては、意見が異なります。上記の私のアプローチはより慎重であり、node.js プロセス内で実行されている他のコードに意図的に干渉する可能性が低くなります。独自のものを追加するには:

var http = require('http');
http.IncomingMessage.prototype.getBrowser = getBrowser; //your custom method
于 2013-09-15T19:50:32.640 に答える