1
我想拦截每个调用渲染,做我自己的东西,然后继续原始的渲染方法。我知道这可以很容易地通过一个中间件就像这样:如何实际拦截res.render
function (req, res, next) {
var _render = render;
res.render = function() {
// custom stuff
_render.apply(this, arguments);
}
next();
}
但是它似乎更高效的只是改变的响应对象,而不是在每次请求更换res.render的原型。我试过such a solution没有成功。当记录http.ServerResponse.prototype
时,没有任何渲染方法的踪迹。
最后我试图拦截只是代替app.render,像这样:
var _render = app.render;
app.render = function() {
// this is refering to app instead of res...
_render.apply(this, arguments);
}
这确实满足只被执行一次的我的标准,但它被称为应用程序对象上,而不是res对象,这意味着我无法访问res或req对象。
基本上我觉得我想要做的是一样的东西:
var _render = something.response.render;
something.response.render = function (view, data, callback) {
// Access res.*, as this.*
_render.call(this, view, data, callback);
};
任何想法如何实现这一目标?
嘿,应该试过。奇迹般有效。谢谢! – 2013-02-13 18:30:10