20
Backbone.js Профилактика сколиоза Митин Павел Anadea Inc. 2012

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

Embed Size (px)

DESCRIPTION

Доклад на конференции Anadea Inc.

Citation preview

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

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

Митин ПавелAnadea Inc. 2012

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

Контекст

социальная сеть в стадии надвигающейся бетыRuby on Rails 3.2

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

Контекст

рендеринг на клиентеHandlebars

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

Контекст

coffeescriptДа. И ещё раз Да

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

Контекст

полевая журналистика● свежие впечатления● постоянно изменяющиеся оценки

происходящего

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

События моделей и коллекций

главный урокСобытия моделей и коллекций backbone -- это становой хребетархитектуры

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

События моделей и коллекций

какокодclass FirstView extends Backbone.View publish: (message) -> @collection.create( { message: message }, { success: => @render() @secondView.render() } )

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

События моделей и коллекций

правила● Привязывайте view к событиям моделей и

коллекций● Запретите использовать колбэки в

методах backbone

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

События моделей и коллекций

пример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, @

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

Router

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

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

Router

корень дерева объектов● Руководит жизненным циклом view● Инстанцирует те коллекции и модели, о

которых знает больше чем● одно view

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

Backbone и потоки данных

в случае обилия полей ввода, используйте альтернативы● Расширения backbone● Другие javascript/coffeescript фреймворки

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

Структурирование дерева проекта

правилоОдин класс -- один файл

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

Структурирование дерева проекта

бенефиты● Упрощает навигацию по кодовой базе● Упрощает менеджмент зависимостей

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

Менеджмент зависимостей

require от sprocketsРаботает достаточно надежно (по крайней мере, для staging окружения:)

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

Трактуйте вашу модель как viewModel

logic-less шаблоныИзменяйте модель под нужды конкретной страницы. Не пытайтесь повторноиспользовать ее

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

Верстка

Bерстальщик должен знать некоторые особенности backbone● Правило: одно view, один tag● Конкуренция нескольких view за одни таг в DOM-дереве● Forms considered harmful

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

backbone + legacy-code

НетОставьте эти попытки!

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

Appendix

аспекты приложения, не имеющие прямого отношения к backbone● Разные шаблонные движки для сервера и клиента

(haml + handlebars)● REST Level 3 (hypermedia controls)● Декораторы вместо view-хелперов на стороне

сервера● PageObject в автоматических приемочных тестах● Сервер полнотекстового поиска как основы read-side

части приложения

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

Главный вывод

Архитектура с MVC на клиенте требует в ДВА раза больше времени, чемтрадиционый RoR подход