में app.listen की कार्यक्षमता को कैसे अधिभारित कर सकता हूं, मैं एक फैक्ट्री फ़ंक्शन (मूल रूप से) बनाने की कोशिश कर रहा हूं जो एक दर्जन छोटे विशेष सर्वरों के लिए एक एक्सप्रेसजे सर्वर को कॉन्फ़िगर और बनाता है। इसके हिस्से के लिए मैं श्रवण समारोह में वृद्धि करना चाहता हूं।मैं एक्सप्रेसजेस
मैं इस बारे में जाने का सबसे अच्छा तरीका जानना चाहता हूं। मैं यहां एक पुन: प्रयोज्य डिजाइन विकल्प की भी तलाश कर रहा हूं।
सर्वर सामान्य रूप से बनाई गई है:
var httpServer = express();
...
जिस तरह से एक्सप्रेस डिज़ाइन किया गया है (सुनिश्चित नहीं हैं कि अगर मैं सही हूँ) की मैं एक {} जो कुछ .prototype.listen उपयोग नहीं कर सकते। तो मैं दो दृष्टिकोण के साथ आया हूँ।
वर्तमान क्षेत्र में एक अतिरिक्त चर का उपयोग करना:
var oldListen = httpServer.listen;
httpServer.listen = function(callback){
...
oldListen.call(httpServer, options.port, options.host, function(){
...
if (typeof callback == 'function') callback();
});
};
कौन सा काम करता है और काफी सीधे आगे है लेकिन फिर मैं एक चर उत्थापन मस्सा है। मैं भी एक बंद समाधान है, लेकिन मुझे लगता है कि यह बहुत व्यावहारिक होने के लिए कुंठित हो सकता है:
httpServer.listen = (function(superListen){
return function(callback){
...
superListen.call(httpServer, options.port, options.host, function(){
...
if (typeof callback == 'function') callback();
});
};
})(httpServer.listen);
दोनों उदाहरण कारखाने संदर्भ का हिस्सा हैं और मैं जानबूझकर तर्क समारोह के लिए पारित को कम करने कर रहा हूँ।
किसी भी मदद की सराहना की जाएगी।
एक्सप्रेस मिडलवेयर ऑर्डर पर निर्भर करता है, इसलिए फैक्ट्री फ़ंक्शन शायद आपको काटने जा रहा है। आप प्रत्येक ऐप में कम चीजों की आवश्यकता के लिए मिडलवेयर लिख सकते हैं https://gist.github.com/aj0strow/b0a1232d2f0df54e1a13 – AJcodez