मैं कनेक्ट/Express.js के साथ एक नोड.जेएस ऐप बना रहा हूं और मैं मूल रेंडर फ़ंक्शन पर अग्रेषित करने से पहले कुछ कोड चलाने के लिए res.render (view, विकल्प) फ़ंक्शन को अवरुद्ध करना चाहता हूं।Node.js/Express.js - Res.render फ़ंक्शन को ओवरराइड/अवरुद्ध कैसे करें?
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' });
});
यह एक प्रत्याशित उदाहरण की तरह दिखता है, लेकिन यह एक समग्र रूपरेखा में फिट है जो मैं बना रहा हूं।
जावास्क्रिप्ट पर ओओपी और प्रोटोटाइप विरासत का मेरा ज्ञान थोड़ा कमजोर है। मैं ऐसा कुछ कैसे करूं?
अद्यतन: कुछ प्रयोग मैं निम्नलिखित के साथ आया था के बाद:
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' });
});
यह काम करने के लिए लगता है। सुनिश्चित नहीं है कि यह सबसे अच्छा समाधान है क्योंकि मैं प्रत्येक अनुरोध के लिए एक नई प्रतिक्रिया रैपर ऑब्जेक्ट बना रहा हूं, क्या यह एक समस्या होगी?
सामान्यतः यह है कि आप इसे कैसे करते हैं। यदि आप इसे एक मिडलवेयर में डालते हैं जिसका उपयोग राउटर से पहले किया जाता है तो आप इसे एक ही स्थान पर सेट कर सकते हैं। –
मैंने मिडलवेयर का उपयोग करने के बारे में सोचा। निश्चित नहीं है कि मैं पूरे आवेदन के लिए प्रतिक्रिया व्यवहार को ओवरराइड करना चाहता हूं, केवल मेरे ढांचे के माध्यम से अनुरोध किए गए अनुरोधों के लिए। –