Прежде чем спросить об этом, app.router
я должен объяснить, по крайней мере, что, по моему мнению, происходит при работе с промежуточным программным обеспечением. Чтобы использовать промежуточное ПО, нужно использовать функцию app.use()
. Когда промежуточное программное обеспечение выполняется, оно будет вызывать следующее промежуточное программное обеспечение с помощью next()
или делать так, чтобы промежуточное программное обеспечение больше не вызывалось. Это означает, что порядок, в котором я размещаю свои вызовы промежуточного программного обеспечения, важен, потому что некоторое промежуточное программное обеспечение зависит от другого промежуточного программного обеспечения, а некоторое промежуточное программное обеспечение ближе к концу может даже не вызываться.
Сегодня я работал над своим приложением, и мой сервер работал в фоновом режиме. Я хотел внести некоторые изменения, обновить страницу и сразу же увидеть изменения. В частности, я вносил изменения в свой макет. Я не смог заставить его работать, поэтому я искал Stack Overflow для ответа и нашел этот вопрос . Он говорит, чтобы убедиться, что 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')
звонками. Таким образом, кажется, что если он уже настроен таким образом, он должен оставаться таким.
После реорганизации моего кода, чтобы я мог видеть изменения моего Стилуса, это выглядит так:
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
в моем коде. Поэтому я прокомментировал это, запустил свое приложение и перешел к /
. Он показал мою страницу индекса просто отлично. Хм, может быть, это сработало, потому что я экспортировал маршрутизацию из моего файла маршрутов (rout.index). Затем я перешел к /test
пункту «Тест» на экране. Хаха, хорошо, я понятия не имею, что app.router
делает. Включено ли это в мой код или нет, моя маршрутизация в порядке. Так что я определенно что-то упускаю.
Вот мой вопрос:
Может кто-нибудь объяснить, что app.router
делает, важность этого и где я должен поместить это в мои вызовы промежуточного программного обеспечения? Было бы также хорошо, если бы я получил краткое объяснение express.static()
. Насколько я могу судить, express.static()
это кэш моей информации, и если приложение не может найти запрошенную страницу, оно проверит кеш, чтобы узнать, существует ли оно.