Общее мнение разработчиков, приходящих на Backbone, заключается в том, что они не знают, с чего начать, поэтому, надеюсь, после прочтения этого сообщения в блоге у вас будет очень общее представление о том, что такое Backbone.

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

Базовыми компонентами, составляющими приложения Backbone, являются Backbone.Model, Backbone.Collection и Backbone.View.

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

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

Представление — это атомарная часть пользовательского интерфейса, соответствующая модели. Каждое представление управляет рендерингом визуального слоя, расположенного перед моделью или коллекцией, и взаимодействием с пользователем в своем собственном элементе DOM. Backbone по-прежнему придерживается мнения о процессе, используемом для визуализации объектов представления и их подпредставлений в пользовательском интерфейсе: вы определяете, как ваши модели будут переведены в HTML. Представление привязывает прослушиватели событий к своей модели во время своей инициализации и настраивает контроллер для пользовательского ввода в этой области.

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

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

События — это клей, скрепляющий ваше приложение. Список реакций может быть вызван, когда что-то происходит. Всякий раз, когда действие пользовательского интерфейса вызывает изменение атрибута модели, модель запускает событие «изменения» (вроде широковещательной рассылки всем остальным компонентам); все представления, которые отображают состояние модели, могут быть уведомлены об изменении, чтобы они могли реагировать соответствующим образом, повторно отображая себя с новой информацией. Основным преимуществом событий Backbone является их поддержка передачи контекста и указания того, к чему относится this при запуске обработчика событий.

Таким образом, Backbone состоит из компонентов модели, коллекции и представления, а события являются связующим звеном между этими компонентами.