Node.jsで使用されているExpressフレームワークのViewクラスをオーバーライドしたいと思います。ルックアップメソッドを拡張したいのですが、ExpressモジュールとAppモジュールを変更せずにこれを行う方法がわかりません。Expressフレームワークから派生したほうがいいのですが、これを行うための適切な方法がわかりません。
何か案は?
ありがとう
Node.jsで使用されているExpressフレームワークのViewクラスをオーバーライドしたいと思います。ルックアップメソッドを拡張したいのですが、ExpressモジュールとAppモジュールを変更せずにこれを行う方法がわかりません。Expressフレームワークから派生したほうがいいのですが、これを行うための適切な方法がわかりません。
何か案は?
ありがとう
私にはあなたができるはずだと思います:
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
これが、メソッドをオーバーライドするこの方法の実行可能性を実証することを願っています。
使用しているExpressのバージョンによって異なります。
アプリがバージョン3より前のExpressを使用している場合にのみ、ビュールックアップコードを簡単に拡張できます。
Express 3.0以降、これは実行できなくなりました。
サンプルコードについては、私の古い関連する回答の1つを確認できます: Node.js+Expressの複数のビューパス