我一直在嘗試創建(基本上)一個工廠函數,爲我所擁有的十幾個小型專用服務器配置和構建一個expressjs服務器。對於這部分我想增加聽功能。我如何重載app.listen的功能expressjs
我想知道最好的方法去做這件事。我也在這裏尋找可重複使用的設計選擇。
服務器是否正常創建:
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);
兩個例子是工廠上下文的一部分,我故意減少傳遞給函數的參數。
任何幫助,將不勝感激。
Express中間件依賴於訂單,所以工廠函數可能會咬你。你可以編寫中間件,以在每個應用程序中需要更少的東西https://gist.github.com/aj0strow/b0a1232d2f0df54e1a13 – AJcodez 2014-12-30 06:33:37