SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
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 подход

Más contenido relacionado

La actualidad más candente

Azure - подведение итогов
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итоговAlexander Babich
 
Azure - хранение данных в облаке
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облакеAlexander Babich
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»SpbDotNet Community
 
Сложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковСложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковz-tech
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)DrupalYug
 
78 - Spring. Настройка GlassFish
78 - Spring. Настройка GlassFish78 - Spring. Настройка GlassFish
78 - Spring. Настройка GlassFishRoman Brovko
 
Dotnet development
Dotnet developmentDotnet development
Dotnet developmentMageCloud
 
Лучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотитеЛучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотитеCodeFest
 
Azure - облачные сервисы и приложения
Azure - облачные сервисы и приложенияAzure - облачные сервисы и приложения
Azure - облачные сервисы и приложенияAlexander Babich
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают ADN Digital Studio
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineVolha Banadyseva
 
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)Ontico
 

La actualidad más candente (14)

Azure - подведение итогов
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итогов
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Azure - хранение данных в облаке
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облаке
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
 
Сложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковСложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворков
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)
 
78 - Spring. Настройка GlassFish
78 - Spring. Настройка GlassFish78 - Spring. Настройка GlassFish
78 - Spring. Настройка GlassFish
 
Dotnet development
Dotnet developmentDotnet development
Dotnet development
 
Лучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотитеЛучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотите
 
Azure - облачные сервисы и приложения
Azure - облачные сервисы и приложенияAzure - облачные сервисы и приложения
Azure - облачные сервисы и приложения
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
 
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
 
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
 

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

ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Dev_Party
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Паттерны проектирования
Паттерны проектированияПаттерны проектирования
Паттерны проектированияITCP Community
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Seleniumjazzteam
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрийsolit
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворкиRoman Brovko
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхMagecom Ukraine
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...Тарасов Константин
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.Igor Shkulipa
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкRoman Dvornov
 

Similar a Backbone.js Профилактика сколиоза (20)

Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...
 
Backbone js
Backbone jsBackbone js
Backbone js
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Паттерны проектирования
Паттерны проектированияПаттерны проектирования
Паттерны проектирования
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
 
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
Стандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 
Java 2 - Java Intro
Java 2 - Java IntroJava 2 - Java Intro
Java 2 - Java Intro
 
Grails & Groovy
Grails & GroovyGrails & Groovy
Grails & Groovy
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 

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