Backbone.js
Профилактика сколиоза
       Митин Павел
      Anadea Inc. 2012
Контекст
социальная сеть в стадии
надвигающейся беты
Ruby on Rails 3.2
Контекст
рендеринг на клиенте
Handlebars
Контекст
coffeescript
Да. И ещё раз Да
Контекст
полевая журналистика
● свежие впечатления
● постоянно изменяющиеся оценки
  происходящего
События моделей и коллекций
главный урок
События моделей и коллекций backbone --
это становой хребет
архитектуры
События моделей и коллекций
какокод
class FirstView extends Backbone.View
 publish: (message) ->
   @collection.create(
     { message: message },
     { success: =>
       @render()
       @secondView.render()
     }
   )
События моделей и коллекций
правила
● Привязывайте view к событиям моделей и
  коллекций
● Запретите использовать колбэки в
  методах backbone
События моделей и коллекций
пример
class FirstView extends Backbone.View
 initialize: -> @collection.on 'reset', @render, @
 publish: (message) ->
   @collection.create message: message

class SecondView extends Backbone.View
 initialize: -> @collection.on 'reset', @render, @
Router
использовать, нельзя игнорировать
Роутер -- второе по значимости (после
событий на моделях и коллекциях)
основание архитектуры страницы
Router
корень дерева объектов
● Руководит жизненным циклом view
● Инстанцирует те коллекции и модели, о
  которых знает больше чем
● одно view
Backbone и потоки данных
в случае обилия полей ввода,
используйте альтернативы
● Расширения backbone
● Другие javascript/coffeescript фреймворки
Структурирование дерева проекта
правило
Один класс -- один файл
Структурирование дерева проекта
бенефиты
● Упрощает навигацию по кодовой базе
● Упрощает менеджмент зависимостей
Менеджмент зависимостей
require от sprockets
Работает достаточно надежно (по крайней
мере, для staging окружения:)
Трактуйте вашу модель как
viewModel
logic-less шаблоны
Изменяйте модель под нужды конкретной
страницы. Не пытайтесь повторно
использовать ее
Верстка
Bерстальщик должен знать некоторые
особенности backbone
● Правило: одно view, один tag
● Конкуренция нескольких view за одни таг в
DOM-дереве
● Forms considered harmful
backbone + legacy-code
Нет
Оставьте эти попытки!
Appendix
аспекты приложения, не имеющие
прямого отношения к backbone
● Разные шаблонные движки для сервера и клиента
    (haml + handlebars)
●   REST Level 3 (hypermedia controls)
●   Декораторы вместо view-хелперов на стороне
    сервера
●   PageObject в автоматических приемочных тестах
●   Сервер полнотекстового поиска как основы read-side
    части приложения
Главный вывод
Архитектура с MVC на клиенте требует в
ДВА раза больше времени, чем
традиционый RoR подход

Backbone.js Профилактика сколиоза