Node.js / Express.js - Как работает app.router?
Прежде чем я спрашиваю оapp.router
Я думаю, что должен объяснить хотя бы то, что, по моему мнению, происходит при работе с промежуточным программным обеспечением. Чтобы использовать промежуточное ПО, нужно использовать функциюapp.use()
, Когда промежуточное программное обеспечение выполняется, оно будет вызывать следующее промежуточное программное обеспечение, используяnext()
или сделайте так, чтобы больше не вызывали промежуточное ПО. Это означает, что порядок, в котором я размещаю свои вызовы промежуточного программного обеспечения, важен, поскольку некоторое промежуточное программное обеспечение зависит от другого промежуточного программного обеспечения, а некоторое промежуточное программное обеспечение ближе к концу может даже не вызываться.
Сегодня я работал над своим приложением, и мой сервер работал в фоновом режиме. Я хотел внести некоторые изменения, обновить страницу и сразу же увидеть изменения. В частности, я вносил изменения в свой макет. Я не могне заставить его работать, поэтому я искал стекПереполнение для ответа и найденоэтот вопрос, Он говорит, чтобы убедиться, что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()
это кэш моей информации, и если приложение можетНе найдя запрашиваемую страницу, она проверит кэш, чтобы увидеть, существует ли он.