2014-05-08 60 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