Connect/Express.js ile bir Node.js uygulaması yapıyorum ve orijinal render işlevine iletmeden önce bazı kodları çalıştırmak için res.render (view, option) işlevini engellemek istiyorum.Node.js/Express.js - Res.render işlevi nasıl geçersiz kılınır/durdurulur?
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' });
});
Gönüllü bir örnek gibi görünüyor, ancak yapıyorum genel bir çerçeveye sığmıyor.
JavaScript'teki OOP ve Prototypal kalıtım hakkındaki bilgim biraz zayıf. Böyle bir şeyi nasıl yapardım?
Güncelleme: Aşağıdaki ile geldi bazı denemeler sonra:
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' });
});
İşe görünüyor. Her istek için yeni bir yanıt sarmalayıcı nesnesi oluşturduğumdan en iyi çözüm olup olmadığından emin değil misiniz?
normalde böyle yaparız o. Bunu, yönlendiriciden önce kullanılan bir ara katmana koyarsanız, tek bir yerde ayarlayabilirsiniz. –
Ara katman yazılımı kullanmayı düşündüm. Tüm uygulama için yanıt davranışını geçersiz kılmak isteyip istemediğimi, yalnızca çerçevemde yönlendirilen istekler için emin değilim. –