Прежде чем спросить о app.router, я думаю, что я должен объяснить, по крайней мере, то, что, как мне кажется, происходит при работе с промежуточным программным обеспечением. Для использования промежуточного программного обеспечения используется функция app.use(). Когда промежуточное программное обеспечение выполняется, оно будет либо вызывать следующее промежуточное программное обеспечение, используя next(), либо сделать так, чтобы больше не вызывалось промежуточное программное обеспечение. Это означает, что порядок, в котором я размещаю свои вызовы промежуточного программного обеспечения, важен, потому что некоторое промежуточное программное обеспечение зависит от другого промежуточного программного обеспечения, и некоторое промежуточное программное обеспечение рядом с ним может даже не вызываться.
Сегодня я работал над своим приложением и работал в фоновом режиме. Я хотел внести некоторые изменения и обновить свою страницу и сразу увидеть изменения. В частности, я вносил изменения в свой макет. Я не мог заставить его работать, поэтому я искал Qaru для ответа и нашел этот вопрос. В нем говорится, что express.static() находится ниже require('stylus'). Но когда я смотрел на этот OP-код, я увидел, что у него был вызов app.router в самом конце его вызовов промежуточного программного обеспечения, и я попытался понять, почему это было.
Когда я сделал приложение Express.js(версия 3.0.0rc4), я использовал команду express app --sessions --css stylus, а в моем файле app.js код появился с моим app.router выше как express.static() и require('stylus') звонки. Похоже, что если он уже настроен таким образом, тогда он должен оставаться таким.
После повторной настройки моего кода, чтобы я мог видеть мои изменения в Stylus, он выглядит так:
app.configure(function(){
//app.set() calls
//app.use() calls
//...
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});
app.get('/', routes.index);
app.get('/test', function(req, res){
res.send('Test');
});
Итак, я решил, что первым шагом будет выяснить, почему важно иметь app.router в моем коде. Поэтому я прокомментировал это, начал свое приложение и перешел на /. Он показал мою индексную страницу просто отлично. Хм, возможно, это сработало, потому что я экспортировал маршрутизацию из файла маршрутов (routes.index). Итак, я перешел к /test, и он отобразил Test на экране. Ха-ха, хорошо, я понятия не имею, что делает app.router. Включен ли он в мой код или нет, моя маршрутизация в порядке. Поэтому я определенно что-то пропустил.
Итак, вот мой вопрос:
Может кто-нибудь объяснить, что делает app.router, важность этого и где я должен помещать его в мои вызовы промежуточного программного обеспечения? Было бы неплохо, если бы я получил краткое объяснение о express.static(). Насколько я могу судить, express.static() - это кеш моей информации, и если приложение не может найти запрошенную страницу, оно проверит кеш, чтобы узнать, существует ли он.