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 以来,这不再可行。

您可以查看我的旧相关答案之一以获取示例代码: Node.js + Express 上的多个视图路径

于 2012-11-14T15:07:44.337 回答