Чета 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, тъй като имаapp.handle
дефиниран в proto.js. И така, това е използване на затваряне и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
.