Node.js / Express.js - Как переопределить / перехватить функцию res.render?
Я создаю приложение Node.js с Connect / Express.js и хочу перехватить функцию res.render (view, option) для запуска некоторого кода перед его передачей в исходную функцию рендеринга.
app.get('/someUrl', function(req, res) {
res.render = function(view, options, callback) {
view = 'testViews/' + view;
res.prototype.render(view, options, callback);
};
res.render('index', { title: 'Hello world' });
});
Это выглядит как надуманный пример, но он вписывается в общую структуру, которую я строю.
Мои знания о ООП и наследовании прототипов в JavaScript немного слабоваты. Как бы я сделал что-то подобное?
Обновить: После некоторых экспериментов я придумал следующее:
app.get('/someUrl', function(req, res) {
var response = {};
response.prototype = res;
response.render = function(view, opts, fn, parent, sub){
view = 'testViews/' + view;
this.prototype.render(view, opts, fn, parent, sub);
};
response.render('index', { title: 'Hello world' });
});
Вроде работает. Не уверен, что это лучшее решение, так как я создаю новый объект-оболочку ответа для каждого запроса, это будет проблемой?