| Backbone |
| 1 | Backbone.js придает структуру веб-приложениям с помощью моделей с биндингами по ключу и пользовательскими событиями, коллекций с богатым набором методов с перечислимыми сущностями, представлений с декларативной обработкой событий; и соединяет это все с вашим существующим REST-овым JSON API. Проект размещается на GitHub, с доступным аннотированным исходным кодом, с онлайновыми тестами с примером приложения, со списком туториалов и списком реальных проектов, которые используют Backbone. |
| 2 | Backbone доступен под лицензией MIT. Русская версия документации размещается на GitHub. Оставляйте баг-репорты и обсуждайте фичи в багтрекере на GitHub'е, на IRC-канале Freenode #documentcloud, задавайте вопросы в группу Google, добавляйте страницы в вики, или шлите твиты @documentcloud. Backbone — это компонент DocumentCloud c открытым исходным кодом. Единственная жесткая зависимость в Backbone — Underscore.js ( >= 1.4.3). |
| 3 | Для RESTful-персистентности, поддержки истории с помощью Backbone.Router и операций с DOM в Backbone.View, подключите json2.js, и либо jQuery ( > 1.7.0) либо Zepto. Введение При работе с веб-приложением, которое включает в себя много JavaScript, первое, чему вы научитесь — это перестать связывать ваши данные с DOM, потому что это подходит только для создания простых JavaScript приложений, которые в конечном итоге выглядят, как запутанные груды jQuery-селекторов и коллбэков, которые отчаянно пытаются хранить актуализированные данные в UI, JavaScript логике и базе данных на сервере. |
| 4 | Для сложных клиентских приложений часто бывает полезным более структурированный подход. Работая с Backbone, вы представляете ваши данные как Модели (Models), которые могут быть созданы, провалидированы, удалены, и сохранены на сервере. Всякий раз, когда в интерфейсе изменяется атрибуты модели, модель вызывает событие "change"; все Представления (Views), которые отображают состояние модели, могут быть уведомлены об изменении атрибутов модели, с тем чтобы они могли отреагировать соответствующим образом — например, перерисовать себя с учетом новых данных. |
| 5 | В готовом приложении на Backbone, вы не должны писать код, ищущий элемент с определенным id в DOM и обновлять HTML вручную. При изменении модели представление просто обновит себя самостоятельно. Если вы новичок и еще не совсем уверены, что Backbone вам подходит, начните с просмотра списка проектов, использующих Backbone. Многие из следующих примеров работоспособны. Нажмите кнопку play, чтобы запустить их. |
| 6 | Обновление до версии 1.0 Backbone версии 0.9 должна быть достаточно безболезненно обновлена до версии 1.0. Ниже представлены несколько наиболее важных изменений: Если вам нужно "умное" обновление коллекции, добавление новых моделей, удаление недостающих и объединение уже существующих, вы должны использовать метод set (ранее "update"), по аналогии с методом set модели. Такое поведение теперь является стандартным при вызове метода fetch коллекции. |
| 7 | Чтобы получить прежнее поведение, передайте {reset: true} в хэше options. Если в ваших URL есть символы, требующие кодирования, Backbone декодирует их для вас и ваши обработчики роутов получат их в качестве аргументов. В версии 0.9.x в событиях Backbone появились два метода: listenTo и stopListening, которые упрощают управление событиями при удалении (remove) представления. Теперь валидация модели по умолчанию включена только для метода save. |
| 8 | Чтобы отвалидировать модель при set, необходимо передать {validate:true} в хэше options. Валидация модели теперь запускает событие "invalid" вместо "error". Backbone.Events Events — это модуль, который может расширить возможности любого объекта, давая ему способность отслеживать и вызывать именованные пользовательские события. События должны быть объявлены после примешивания модуля. В событие можно передавать аргументы. |
| 9 | Например: var object = {}; _.extend(object, Backbone.Events); object.on("alert", function(msg) { alert("Сработало " + msg); }); object.trigger("alert", "событие"); Например, можно сделать удобный диспетчер событий, который будет координировать события между различными областями приложения: var dispatcher = _.clone(Backbone.Events) onobject.on(event, callback, [context])Синоним: bind Привязывает функцию-обработчик callback к объекту, который будет вызываться всякий раз, когда сработает событие event. |
| 10 | Если у вас используется множество различных событий на странице, следует использовать двоеточия в названиях: "poll:start", или "change:selection". Строка названия события (event) может состоять из разделенных пробелами нескольких событий... book.on("change:title change:author", ...); Чтобы сохранить контекст, с которым должен быть вызван обработчик, передайте третий необязательный аргумент context: model.on('change', this.render, this) Существует специальное значение "all", которое можно указать в качестве названия события. |
| … |
Комментарии