在简单的NodeJS中,我们可以使用 -
创建服务器http.createServer(function(req,res) { /* header etc. */});
但我开始使用express并且服务器是自动创建的。 然后我开始学习套接字,但是socket.io需要将http服务器作为参数传递以创建套接字连接。所以现在创建我使用的服务器 -
http.createServer(app);
这是否意味着app = require('express')();
实际上返回了请求处理函数?真正发生了什么?
答案 0 :(得分:1)
是。它实际上返回一个函数,该函数采用(request, response, next)
,它是中间件原型之一。本质上,express模块导出一个名为createApplictaion
的函数,它返回一个中间件处理程序。 Here is the current source表示快递,您可以自由浏览。
exports = module.exports = createApplication;
/**
* Create an express application.
*
* @return {Function}
* @api public
*/
function createApplication() {
var app = function(req, res, next) {
app.handle(req, res, next);
};
mixin(app, EventEmitter.prototype, false);
mixin(app, proto, false);
app.request = { __proto__: req, app: app };
app.response = { __proto__: res, app: app };
app.init();
return app;
}