Подтвердить что ты не робот

Контроллер в Backbone.js

Я новичок в Backbone.js. Я просмотрел документацию. Мой вопрос:  в чем заключается концепция контроллера? Другими словами, что такое контроллер в Backbone.js?

Я слышал, что маршрутизатор - это контроллер. Если да, то почему он считается контроллером? Можем ли мы разработать простые базовые приложения без Маршрутизатора? В этом случае, какой будет контроллер?

4b9b3361

Ответ 1

Чтобы немного почистить вещи. Маршрутизатор не является контроллером, это способ определения карты маршрутов на стороне клиента (аналогично Rails routes.rb). Это помогает маршрутизировать клиентские страницы для определенных действий/обработчиков. И это отличается от задания диспетчера, которое должно обеспечить небольшую согласованность между моделями и представлениями. И на самом деле существует несколько способов сделать это с использованием Backbone. Цитата из Базовая документация:

Ссылки между моделями и представлениями можно обрабатывать несколькими способами. Некоторые людям нравятся прямые указатели, где представления соответствуют 1:1 с моделей (model.view и view.model). Другие предпочитают иметь промежуточные объекты "контроллера", которые организуют создание и организацию взглядов в иерархию. Другие по-прежнему предпочитают предполагаемый подход, и всегда запускайте события, а не вызывайте методы напрямую. Все эти стили работают хорошо.

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

Во втором предлагается включить третий компонент, который выполняет эту роль оркестровки. Я считаю, что это может быть полезно в довольно больших и сложных приложениях. Для этого я рекомендую вам взглянуть на Chaplin, пример архитектуры приложения с использованием Backbone.js. Ребята проделали отличную работу по разделению вещей, а также представили концепцию контроллера в архитектуре.

Последний подход предполагает использование событий для обозначения действий и посредника для обработки этих действий. Для этого я призываю вас взглянуть на шаблон посредника и опубликовать/подписать JavaScript.

Ответ 2

Ознакомьтесь с статьей Addy Osmani о MV * на клиенте:

http://addyosmani.com/blog/understanding-mvc-and-mvp-for-javascript-and-backbone-developers/

Из статьи:

В Backbone один разделяет ответственность контроллера как с Backbone.View, так и с Backbone.Router.

и

В этом отношении, вопреки тому, что может быть упомянуто в официальной документации или в сообщениях в блоге, Backbone не является действительно MVC/MVP и MVVM.

Ответ 3

Это больше похоже на то, как, например, работает iOS Cocoa Touch framework, вы не должны думать об этом как backend MVC, сама магистральная команда даже никогда не упоминает MVC на своем веб-сайте, чтобы избежать путаницы, которую люди часто приходят из бэкэнд MVCs. Просмотр в магистрали - это то, что вызывается в iOS ViewController/AppController, и обычно ваш основной AppController будет View, который устанавливает основную оболочку для вашего приложения, которое обычно вы также будете использовать в качестве глобальной паб/подсистемы и контроллера для вашей основной логики приложения,

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

По крайней мере, это наш подход - если вы проверили несколько обучающих программ в дикой природе, вы, вероятно, видели, что когда дело доходит до Backbone, существует так много подходов к этому, как и у многих разработчиков. И это то, что красиво о Backbone!:)

Ответ 4

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

оттуда снова на нем.

однако в последнее время я пришел arcoss сторонним плагином, который называется backboneMVC. Прочтите его документально, но еще не попробовать себя.

Он нацелен на захват вашего маршрутизатора и создание маршрутов на основе ваших контроллеров и действий, которые вы определяете с ним.

Взгляните на эту библиотеку, но я ничего не могу обещать, потому что мне еще предстоит что-то создать с ней.