backbone-app - это JavaScript MVC-фреймворк, основанный на BackboneJS, который поддерживает все необходимые фичи для реализации полноценного Single Page Application:
-
Компонентная архитектура
-
Роутинг
-
Работа с данными по REST
Если Вам не нужна работа с API:
-
Создайте класс приложения
App
, наследуемый от классаBackboneApp.App
. -
Создайте классы для каждой страницы, наследуемые от класса
BackboneApp.Page
. -
Создайте класс роутера, наследуемый от класса
BackboneApp.Router
. Определить в свойстве routes список адресов, по которым должны быть доступны страницы, созданные на шаге 2. -
Создайте блоки (компоненты) интерфейса, наследуемые от класса
BackboneApp.Block
. Их можно переиспользовать в разных местах. -
Включите созданные блоки в шаблоны создаваемых страниц и новых блоков.
Если Вам нужна работа с API:
-
Создайте модель (для одной сущности) или коллекцию (для списка сущностей), наследуя их от
BackboneApp.Model
иBackboneApp.Collection
соответственно. Пропишите в нихrootUrl
илиurl
, по которому нужно загружать данные. -
Добавьте коллекции и модели, которые Вам нужны в свойства
collections
иmodels
классов приложения и страниц соответственно. Они будут загружены перед их рендером. -
Далее можно работать с этими моделями/коллекциями, как с обычными моделями/коллекциями BackboneJS.
Backbone App состоит из нескольких базовых модулей, каждый из которых имеет своё назначение.
Block
- базовый модуль для блоков интерфейса. Наследуется отBackboneJS.View
.Page
- базовый блок страницы интерфейса. Наследуется отBlock
.App
- базовый блок приложения. Наследуется отBlock
.Model
- базовый модуль модели данных. Наследуется отBackboneJS.Model
.Collection
- базовый модуль коллекции данных. Наследуется отBackboneJS.Collection
.Router
- базовый модуль роутера. Наследуется отBackboneJS.Router
.
- Создаётся объект приложения App, который рендерится (обычно это loader) и загружает заданные данные.
- В методе App.initRouter создаётся объект роутера.
- Роутер на основе адресной строки определяет нужную страницу - создаётся объект страницы.
- Страница загружает заданные данные и рендерится.
- При переходе между страницами снова работают пункты 3-4.
Блок - компонент, на базе которого строится интерфейс. Его нужно наследовать от BackboneApp.Block
.
Наиболее переиспользуемые методы/свойства блока:
initialize()
- инициализация, вызывается 1 раз при создании блока.fetch()
- загрузка данных. По умолчанию, пустой метод. Вызывается 1 раз после создания блока.template
- HTML-шаблон, который должен рендерить блок. По умолчанию, Underscore HTML-template.render()
- рендер HTML-шаблона в DOM-элемент блока. Можно вызывать каждый раз, когда нужно перерендерить блок.$(selector)
- вложенный в блоке jQuery. Позволяет искать DOM-элементы внутри DOM-элемента блока.$el
- jQuery-DOM-элемент, в котором отрендерен блок.trigger(eventName, eventData)
- генерация события.events
- список обработчиков внутренних событий блока - как нативных JS-событий, так и событий, сгенерированных вложенными блоками.globalEvents
- список обработчиков событий блоков, не являющихся вложенными в данный.