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