Backbonejs: организация маршрутов

Как организовать ваш маршрутный объект, если в нем слишком много маршрутов, скажем, сотня? Вы просто помещаете это в единственный файл или объект?

Благодарю.

2 ответа

Решение

Я думаю, что здесь нет правильного или неправильного ответа. Что действительно верно, так это то, что у вас не может быть одного маршрутизатора с более чем 50 маршрутами... это кошмар обслуживания.

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

  • Заказать приложение MGMT
    • приложение для человека
      • router.js
      • app.js
      • ...
    • приложение заказа
      • router.js
      • app.js
      • ...
    • ...
    • globalrouter.js
    • globalapp.js

Ключевым моментом здесь является просто никогда не создавать огромное приложение / монолит, а вместо этого создавать множество небольших приложений, которые можно объединить вместе, чтобы сформировать все приложение (взаимодействие с событиями между каждым из них). Тем не менее, в приведенном выше примере "person", а также приложение "order" имеют свои собственные маршрутизаторы, которые просто хранят соответствующие им маршруты. "Глобальное" приложение является связующим звеном, объединяя все отдельные приложения, например, наличие меню приложения и, возможно, несколько общих маршрутов, не привязанных к конкретному модулю / подпапу.

Может быть, Backbone Aura - хорошая отправная точка.

Вы можете разбить маршрутизатор на несколько файлов. То, как вы разбиваете его, зависит от вашего варианта использования, и в моем приложении мы разбиваем его по модулям.

То, как вы определяете модуль, зависит от вашего приложения, но общее практическое правило заключается в том, что вы будете группировать функции по одной "функциональности" или теме вместе.

Например, предположим, что ваше приложение является базовым приложением "Компания" (плохой пример использования Backbone.js, но давайте будем простыми). На сайте есть несколько разделов: "О нас", "Продукт", "Клиент", " Поддержка "," Блог "," Карьера ". В каждом разделе у него есть 2 уровня дочерних страниц (например, в "Продуктах" вы можете иметь список продуктов, а внутри каждого продукта вы можете перейти к более подробному представлению о продукте, о том, как приобрести продукт, и тд и тп)

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

var MainRouter = Backbone.Router.extend({ 
  routes: {
    '/': 'home'
  },
  home: function() {
    // Display home view
  }
});

var ProductRouter = Backbone.Router.extend({
  routes: {
    '/product': 'listProducts',
    '/product/:id/buy': 'buyProduct',
    '/product/:id': 'viewProduct',
    '/product/compare/:id1/:id2': 'compareProduct'
  },
  listProducts: function() { ... },
  buyProduct: function(id) { ... }
  viewProduct: function(id) { ... }
  compareProduct: function(id1, id2) { ... }
});

Когда вы запускаете приложение, вы просто должны запустить их все:

$(function() {
  new MainRouter();
  new ProductRouter();
});

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

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