Express js зачем использовать маршрутизатор?
зачем мне делать:
var router = express.Router();
router.get('/', ...)
вместо
app.get('/', ...);
эти два дадут мне тот же результат. Какой смысл создавать экземпляр маршрутизатора, если приложение уже является маршрутизатором?
2 ответов
это полезно, если вы пишете очень сложные приложения. Например, у вас может быть такое дерево:
routes
user.js
post.js
server.js
как user.js и post.js, вы создадите Router объект и экспортировать его. Вы можете прикрепить все маршруты для пользователя к этому маршрутизатору-скажем /user/new, /user/edit и /user/1 и /post/new, /post/edit и /post/1.
на server.js, вы require каждый из ваших маршрутов и прикрепите их маршрутизаторы через app.use:
app.use('/user', user);
app.use('/post', post);
все запросы к /user затем будет отправлен на маршрутизатор пользователя, и все запросы к /post будет отправлен на почтовый маршрутизатор. Затем вы можете зарегистрировать маршруты, такие как:
router.get('/new', function(req, res) { });
и он будет автоматически отображаться на /user/new или /post/new. Это полезно, потому что это помогает организовать ваше приложение, и это заставляет вас разделить один раздел вашего приложения в один файл (разделение проблем и все такое). Это полезная часть express, что не очень хорошо рекламируется.
пересмотр промежуточного программного обеспечения маршрутизатора
промежуточное ПО маршрутизатора-это очень специальное промежуточное ПО. В то время как другие Express middlewares наследуются от Connect, маршрутизатор реализуется Проявляться. Это промежуточное несет полную ответственность за расширение возможностей Экспресс с Sinatra-подобных маршрутов. Промежуточное ПО маршрутизатора-это собственная система промежуточного ПО. Маршрут определения образуют middlewares в этот стек. Значение, соответствие маршрут может ответить с помощью HTTP-ответ и завершение потока запросов, или передайте запрос следующему промежуточному ПО в строке.
а то
чтобы обеспечить предсказуемость и стабильность, мы должны явно добавить маршрутизатор к стеку промежуточного ПО
app.use(app.router);