1

Node.jsで使用されているExpressフレームワークのViewクラスをオーバーライドしたいと思います。ルックアップメソッドを拡張したいのですが、ExpressモジュールとAppモジュールを変更せずにこれを行う方法がわかりません。Expressフレームワークから派生したほうがいいのですが、これを行うための適切な方法がわかりません。

何か案は?

ありがとう

4

2 に答える 2

2

私にはあなたができるはずだと思います:

var View = require('express/lib/view');

// Keep reference to original lookup method
var _lookup = View.prototype.lookup;

// Override lookup method
View.prototype.lookup = function (path) {
    // Your implementation here
};

アップデート:

これをデモンストレーションとして実行します。

var View = require('express/lib/view');
var _lookup = View.prototype.lookup;
var express = require('express');

View.prototype.lookup = function (path) {
    console.log('LOOKUP!!! ' + path);

    return _lookup.call(this, path);
};

var app = express();

app.get('/', function (req, res) {
    res.render('foo.jade');
});

app.listen(3000);

走る

node app & sleep 1 && curl localhost:3000

これが、メソッドをオーバーライドするこの方法の実行可能性を実証することを願っています。

于 2012-11-14T14:24:47.173 に答える
1

使用しているExpressのバージョンによって異なります。

アプリがバージョン3より前のExpressを使用している場合にのみ、ビュールックアップコードを簡単に拡張できます。

Express 3.0以降、これは実行できなくなりました。

サンプルコードについては、私の古い関連する回答の1つを確認できます: Node.js+Expressの複数のビューパス

于 2012-11-14T15:07:44.337 に答える