Я читаю Node.js Connect версии 2.15.0:
/**
* Create a new connect server.
*
* @return {Function}
* @api public
*/
function createServer() {
function app(req, res, next){ app.handle(req, res, next); }
utils.merge(app, proto);
utils.merge(app, EventEmitter.prototype);
app.route = '/';
app.stack = [];
for (var i = 0; i < arguments.length; ++i) {
app.use(arguments[i]);
}
return app;
};
Несколько вопросов:
app.handle
, по-видимому, предоставляется в proto, поскольку в proto.js определеноapp.handle
. Итак, это использование замыкания, иapp.handle
определяется не в то время, когда Node анализируетfunction app()
, а позже в коде? Также самapp
определен в..эээ..function app()
. Код кажется мне забавным.Когда вызывается
function app()
? Все, что я знаю, create server создает сервер. Итак, когда я буду вызывать эту функцию и как? Делаю ли я что-то вроде:app = createServer() app.listen(3000) app(req, res, next)
utils.merge() просто говорит
exports.merge = function(a, b){ if (a && b) { for (var key in b) { a[key] = b[key]; } } return a; };
Это обычная практика вместо наследования или что? Мне кажется
mixin
.