2016-08-04 4 views
0

Я новичок в Express и программировании в целом.Express - экспорт нескольких маршрутизаторов() или одного маршрутизатора()?

Если вы следуете this book, вы научитесь создавать один маршрутизатор(), который отображает все маршруты для всех контроллеров. Вы в конечном итоге с:

controllers 
    users.js 
    (other controllers....) 
routes 
    routes.js 

Этот маршрутизатор затем вводят в ваше приложение с помощью одного вызова app.use(router).


Однако, если вы создаете приложение с помощью express-generator, он будет генерировать структуру образца с множественным Router() с, которые затем смонтированных в ваше приложение с помощью нескольких app.use() вызовов. Например:

app.use('/users', users) // mounts a Router() 
app.use('/posts', posts) // mounts another Router() 
кажется, что экспресс предпочитает иметь индивидуальный маршрутизатор установлен для каждого контроллера. У меня все получилось?

В примере express-generator обратные вызовы жестко связаны с маршрутами. Предположим, вы хотите ввести контроллеры в свой код.

У вас будет что-то вроде этого?

controllers 
    users 
     routes.js 
     callbacks.js 
    [other controller] 
     [its Router()].js 
     [its callbacks].js 

Мои вопросы - это лучший способ пойти?

Есть ли какая-то архитектурная концепция, которую я неправильно понимаю? (Может быть, я должен быть обратным вызовам жесткой проводки в маршрутах, когда я использую несколько маршрутизаторов?)

Благодарим вас за ответы.

ответ

1

Мульти-маршрутизаторы позволяют отделять маршруты в модулях. Он избегает иметь большой файл со всеми маршрутами. Например, если вы принимаете app.use('/users', users), ваш файл users.js будет содержать все маршруты, связанные с пользователями.

Лично я работаю над проектом с мангуста (http://mongoosejs.com/), которые используют эту архитектуру:

express/ 
    index.js <- Main file to configure express router with adding middlewares, etc. 
    routes.js <- All your routes are required in this file 
    entities/ 
     users/ 
      users.model.js <- Model of the user 
      users.controller.js <- Controller associated to the model. Any route call a function of the controller 
      users.routes.js <- All routes for users 
     projects/ 
      projects.model.js 
      projects.controller.js 
      projects.routes.js 

С архитектурой мульти-маршрутизаторы, вы будете прирост масштабируемости и читаемость. И разделение между обратными вызовами и маршрутами предотвращает загрязнение вашего маршрутизатора кодом контроллера.

Смежные вопросы