В Express, что делает app.router точно?

Когда я создаю образец Express-приложения с использованием экспресс-двоичного кода, код начальной загрузки имеет следующие строки:

...

var app = express();
...
app.use(app.router);

Я не нашел много о app.router. Я думал, что это промежуточное программное обеспечение, которое обрабатывает правила маршрутизации (app.get(), app.post() и т.д.), Но эти правила также выполняются при удалении app.use(app.router); линия.

Итак, какова же цель этого промежуточного программного обеспечения?

Ответ 1

Это из руководства Express 2.x http://expressjs.com/2x/guide.html

"Обратите внимание на использование app.router, который может (необязательно) использоваться для монтирования маршруты приложения, в противном случае первый вызов app.get(), app.post() и т.д. будут монтировать маршруты.

Я подозреваю, что это относится и к Express 3.x.

Ответ 2

В Express 3.x приложение app.router является расширенной версией подключаемого промежуточного маршрутизатора. Как сказал гектор, это Экспресс обрабатывает обработчики запросов, зарегистрированные с помощью app.get, app.post и т.д.

Если вы не вызываете app.use(app.router) явно, то выражение будет вызывать его неявно при первом использовании app.get(...), app.post(...) и т.д. Однако вы можете явно указать .use, потому что тогда вы выбираете порядок всего вашего промежуточного программного обеспечения.

app.use(express.favicon());
app.use(express.bodyParser());
app.use(express.methodOverride());
// app.get, app.post, etc called before static folder
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public')));

Посмотрите, как маршрутизатор извлекается в источнике Express 3 здесь.

Обратите внимание, что Экспресс 4 не нужен app.router.

Ответ 3

Этот метод устарел

почему мы используем маршрутизатор.. из-за того, что нам нужно подключить наше приложение к нашему главному приложению.