2014-05-08 92 views
0

以下代碼來自connect,它是nodejs中的流行模塊。如何理解下面的nodejs代碼?

function createServer() { 
    function app(req, res, next){ app.handle(req, res, next); } 
    merge(app, proto); 
    merge(app, EventEmitter.prototype); 
    app.route = '/'; 
    app.stack = []; 
    return app; 
} 

我想了很久,但我不知道功能應用程序如何執行。有人熟悉代碼嗎?請告訴我它是如何工作的。謝謝!

+0

「*我不知道函數應用程序如何執行*」此處定義的'function app(...)'不會執行。這裏沒有調用它。它的屬性被修改,然後被返回。 –

+0

我想,我知道答案,謝謝你的回覆! – zcfrank1st

+2

是的。這裏的'function app'是'var app' [在示例中](https://github.com/senchalabs/connect#connect--)的值,它最終傳遞給'http.createServer()'。 –

回答

0

稍後有可能更多的代碼。

根據該blog

上面的代碼使用utils.merge得到應用的 的Connect http server prototype所有功能。這包括.use,.handle, 和.listen方法。

該應用程序還合併了node.js事件庫中的EventEmitter。 EventEmitter是應用程序獲取app.on和app.emit的地方。

+0

謝謝您的回答!我知道功能應用程序如何執行。謝謝! – zcfrank1st