Прежде чем спросить о 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()
- это кеш моей информации, и если приложение не может найти запрошенную страницу, оно проверит кеш, чтобы узнать, существует ли он.