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

Ответы на вопрос(3)

Ваш ответ на вопрос