Marionette Modules - организация маршрутов

В настоящее время мы работаем над большим проектом в Марионетке. Мы основали архитектуру на http://www.backbonerails.com/. Проект разделен на несколько модулей, каждый со своими обязанностями. Важно, чтобы модули можно было многократно использовать, чтобы они могли отображаться в любом регионе на веб-сайте. Прямо сейчас модули запускаются так:

App.execute "module:name_of_the_module:action", @model, @layout.regionName

До сих пор это работало хорошо, но теперь мы добавили маршрутизаторы в проект. Каждый модуль должен нести ответственность за свою маршрутизацию, поэтому они находятся в модулях. Теперь, когда маршрутизаторы получают маршрут и начинают маршрутизацию, им не хватает региона и модели для работы. Поэтому сначала мы должны сохранить регион и модели в модуль, который будет использоваться в маршрутизаторе позже.

App.commands.setHandler "module:name_of_the_module:action", (model, region) ->
       MyModule.region = region
       MyModule.model = model

Это не очень хороший способ сделать это, потому что обычно есть много действий для каждого виджета (показать, редактировать, создать,...), и нам придется много дублировать.

Поэтому я спрашиваю - как вы инициализируете свои модули и работаете с роутерами? Есть ли лучшая практика?

1 ответ

Я создал плагин marionette.js, который позволяет вам выполнять маршрутизацию на основе состояния (очень похоже на angular.js ui-router). Вы можете полностью исключить модули в коде и повторно использовать контроллеры.

Ссылка: http://ajency.github.io/marionette.state/

Другие вопросы по тегам