По умолчанию .use()
имеет два основных различия: .get()
.
.get()
будет соответствовать только запросам GET, .use()
будет соответствовать любому типу запроса (POST, PUT,GET и т.д.Это сделано таким образом, чтобы вы могли настроить обработчик промежуточного программного обеспечения, который будет запускать широкий набор URL, а не только один URL..get()
чаще используется с ограниченными URL-адресами, такими как один конкретный URL-адрес.
app.get()
в значительной степени совпадает с router.get()
.Объект app
является маршрутизатором, который также имеет некоторые другие свойства и методы.Таким образом, почти любой метод объекта-маршрутизатора также применяется к объекту app
, но не наоборот.
Вы можете использовать маршрутизатор вместо объекта приложения по ряду причин:
- Модульность кода.Модуль создает свой собственный маршрутизатор, устанавливает на нем несколько маршрутов и затем экспортирует один маршрутизатор, который вызывающий абонент может добавить в текущее приложение.
- У вас есть несколько маршрутов с одинаковым префиксом ипосчитайте более понятным настроить маршрутизатор для этого общего префикса, а затем просто разместить маршруты на этом маршрутизаторе без необходимости указывать префикс в каждом из них.
- Чтобы создать набор маршрутов, использующих одно и то же промежуточное ПОобработка, но другие маршруты в вашем приложении не разделяют эту обработку промежуточного программного обеспечения.В этом случае вы создаете маршрутизатор, помещаете на него некоторое промежуточное программное обеспечение и затем определяете маршруты на этом маршрутизаторе.Промежуточное программное обеспечение будет запускаться только для маршрутов, маршрутизируемых на этот маршрутизатор.
Некоторые примеры:
// matches /hello and /hello/hi and /hello/goodbye for GET, POST or PUT
app.use('/hello', ...);
// matches only a GET request for /hello
app.get('/hello', ...);
Пример использования маршрутизатора для обеспечения модульности.
Модуль с определенными в нем маршрутами:
// some_routes.js
const router = require('express').Router();
router.use(someMiddlewareForWholeRouter);
router.get('/hello', ...);
router.get('/goodbye', ...);
router.get('/callme', ...);
module.exports = router;
Использование этого модуля в вашем приложении:
// app.js
const some_routes = require('./some_routes.js');
// hook up all routes from some_routes with the path prefix of /greeting
app.use('/greetings', some_routes);