Node.js / Express.js - Как работает app.router?

Прежде чем я спрашиваю оapp.router Я думаю, что должен объяснить хотя бы то, что, по моему мнению, происходит при работе с промежуточным программным обеспечением. Чтобы использовать промежуточное ПО, нужно использовать функциюapp.use(), Когда промежуточное программное обеспечение выполняется, оно будет вызывать следующее промежуточное программное обеспечение, используяnext() или сделайте так, чтобы не вызывали промежуточное программное обеспечение. Это означает, что порядок, в котором я размещаю свои вызовы промежуточного программного обеспечения, важен, поскольку некоторое промежуточное программное обеспечение зависит от другого промежуточного программного обеспечения, а некоторое промежуточное программное обеспечение ближе к концу может даже не вызываться.

Сегодня я работал над своим приложением, и мой сервер работал в фоновом режиме. Я хотел внести некоторые изменения, обновить страницу и сразу же увидеть изменения. В частности, я вносил изменения в свой макет. Я не смог заставить его работать, поэтому я искал Stack & # xA0; 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 делает. Включено ли это в мой код или нет, моя маршрутизация в порядке. Так что я определенно что-то упускаю.

So Here Is My Question:

Может кто-нибудь объяснить, чтоapp.router Имеет ли это значение, и где я должен разместить это в своих вызовах промежуточного программного обеспечения? Было бы также хорошо, если бы я получил краткое объяснение оexpress.static(), Насколько я могу сказать,express.static() это кэш моей информации, и если приложение не может найти запрошенную страницу, оно проверит кэш, чтобы узнать, существует ли оно.

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

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