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);