app = module.exports = express()
может быть также записана в виде:
app = express()
app.get('/blah', function(a,b){});
app.post('/blah', function(a,b){});
module.exports = app
Так он устанавливает экспорт модуля к экземпляру экспресс-приложения (которое, в свою очередь, представляет собой connect приложение).
Интересной частью является app.use(require('./lib/file.js'));
, которая в основном устанавливает это экспортируемое приложение как промежуточное программное обеспечение для подключения. Это возможно, потому что приложения для подключения фактически являются функциями, которые могут использоваться в качестве промежуточного программного обеспечения. Вы можете видеть это ясно, глядя на код, который создает их:
function createServer() {
//the magic happens in the next line:
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;
};
В основном это один из способов поставить маршруты в отдельный файл (в данном случае file.js
).
Вы увидите такое дерьмо во многих модулях Node.js. Не уверен, почему люди просто не помещают 'module.exports = app;' в конце своего кода модуля. – Pickels