SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
MARIONETTE
SHALL WE DANCE?
Ксения Редунова
@Katidotk
BACKBONEJS
ПЛЮСЫ И МИНУСЫ
• Минималистичная, простая и гибкая
• Отличная событийная архитектура
• Реализация Model/Collection для REST
• Хорошее разделение кода MVW
ПЛЮСЫ
• Минималистичная :)
• Слишком легко прийти не туда
• Нет основного класса Application
• Нет вложенных иерархий вью
• Нет организации layouts (header/footer/sidebar/content etc)
• Метод render не делает ничего по умолчанию
• Управление памятью
МИНУСЫ
MARIONETTE
• Составная библиотека для упрощения разработки
крупномасштабных приложений
• Представляет набор общих паттернов проектирования и
реализации
• Сокращает объем стандартного кода благодаря типам
вью
• Содержит вложенные вью
• Управляет памятью
• Объединяет событийную архитектуру и агрегатор
событий
Marionette.Application
•Управление приложжением - start, stop, и другая
функциональность
•Модульность
•На самом деле,“application” это просто объект
MODULE
Is deprecated!
используйте AMD/CommonJS/ES6 modules
MARIONETTE VIEW MAGIC
MARIONETTE VIEW MAGIC
• Рендеринг есть и привязан к изменениям модели
• Управление шаблоном
• Содержит UI object
• Обеспечивает метод .close()
• Расширяемые
TEMPLATE HELPERS
TEMPLATE HELPERS
Marionette.ItemView
• Вью, который рендерится на основании данных модели
• атрибут “model”
• атрибут “template”
• рендерится автоматически
• modelEvents – методы вью вызываются на событиях
модели
UI OBJECT
UI объект создает кэшированные атрибуты, которые указывают
на объекты, выбранные jQuery
Marionette.CollectionView
• Вью рендерится на основании данных из Collection
• Автоматически перерендерится на событиях add/
remove/reset/etc
• Атрибут childView, который автоматически
инстанциируется и свяжется с model
COLLECTIONVIEWS
Marionette.CompositeView
• CompositeView = CollectionView + template
• Комбинация ItemView и CollectionView
• Рендерит элементы Backbone.Collection внутри wrapper
• Наследует Marionette.CollectionView
MODEL EVENTS & COLLECTION EVENTS
ЗОМБИ-АПОКАЛИПСИС
REGION
• Вью, предназначенное для управления жизненным циклом
других вью
• Рендерит экземпляр вью и добавляет в DOM
• “Мост” между DOM и backbone
ОТОБРАЖЕНИЕ ВЬЮ В
РЕГИОНЕ
LAYOUT
• Отличие от ItemView - содержит в себе регионы
• Хорошо подходит на роль “виджета” с несколькими вью
LAYOUT
BACKBONE.WREQR
& BACKBONE.RADIO
MESSAGING BUS
•Event события уровня приложения
•Commands исполнение команд
•Request/Response запрос определенных
значений/состояний
EVENT AGGREGATOR
• pub/sub
• trigger/bind
• Оповещение о событии разных частей приложения
(“user:logged-in”)
• События уровня приложения близки к глобальным
вызовам функций
• Различные типы событий, пространства имен
определяют семантику
EVENT AGGREGATOR
COMMANDS
Применяются для обеспечения функциональности,
которая обрабатывается в одной точке, но
возникает в разных точках
• Подписаться на исполнение команды - один раз
• Пример: сохранение
• cmd-s
• Clicking a toolbar button
• Choosing File => Save from the menubar
COMMANDS
REQUEST / RESPONSE
• Применяется, когда нам нужно запросить информацию
от другой части приложения
• Для данных уровня приложения (например, состояние
корзины пользователя)
• Отличие от Events - намерение. Событие возникает как
есть, а Request запрашивает специфичную информацию
• Исполняет запрос один подписчик
• Легко злоупотребить, как и в случае с другими
глобальными объектами
REQUEST / RESPONSE
// Set up an object to reply to a request. In this case,
// whether or not its visible.
myObject.reply('visible', this.isVisible);
// Get whether it's visible or not.
var isViewVisible = myObject.request('visible');
Backbone.Radio.channel
// Get a reference to the channel named 'user'
var userChannel = Backbone.Radio.channel('user');
userChannel.on('some:event', function() {
console.log('An event has happened!');
});
userChannel.reply('some:request', 'food is good');
userChannel.trigger('some:event');
Объединение Backbone.Events and Radio.Requests
ИТОГО
УправлениеViews:
• Дочерние views - Backbone.BabySitter
• Marionette.Region. Содержит html элемент и умеет в него вставлять содержимое других view
• Marionette.RegionManager
• Marionette.TemplateCache
Marionette.Application
Marionette.AppRouter
Шина сообщений:
• Application.vent - экземпляр Backbone.Wreqr.EventAggregator. pub/sub.
• Application.commands - экземпляр Backbone.Wreqr.Commands. Подписаться на
исполнение команды - 1 раз
• Application.reqres - экземпляр Backbone.Wreqr.RequestResponse. Исполняет запрос
только один подписчик
ПОЛЕЗНОЕ
MarionetteJS.org (Derick Bailey)
BackboneRails.com (Brian Mann)
“Marionette: gentle introduction” by David Sulc
СПАСИБО ЗА ВНИМАНИЕ!

Weitere ähnliche Inhalte

Was ist angesagt?

AngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияAngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияIgor Sazonov
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
VIPER architecture
VIPER architectureVIPER architecture
VIPER architectureAlex Rudyak
 
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Ontico
 
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsTrainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsDevOWL Meetup
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMPavel Tsukanov
 
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)DrupalYug
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UIVyacheslav Lyalkin
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRAMBLER&Co
 
Viper - чистая архитектура iOS-приложения (И. Чирков)
Viper - чистая архитектура iOS-приложения (И. Чирков)Viper - чистая архитектура iOS-приложения (И. Чирков)
Viper - чистая архитектура iOS-приложения (И. Чирков)65apps
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidDataArt
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011camp_drupal_ua
 
Сложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковСложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковz-tech
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Computer Science Club
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 

Was ist angesagt? (20)

AngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияAngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для понимания
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
VIPER architecture
VIPER architectureVIPER architecture
VIPER architecture
 
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)
 
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsTrainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)Реактивный фронтенд фреймворк для людей (Константин Комелин)
Реактивный фронтенд фреймворк для людей (Константин Комелин)
 
Как и зачем мы тестируем UI
Как и зачем мы тестируем UIКак и зачем мы тестируем UI
Как и зачем мы тестируем UI
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Abf
AbfAbf
Abf
 
Rambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPERRambler.iOS #5: TDD и VIPER
Rambler.iOS #5: TDD и VIPER
 
Bootstrap3 basics
Bootstrap3 basicsBootstrap3 basics
Bootstrap3 basics
 
Viper - чистая архитектура iOS-приложения (И. Чирков)
Viper - чистая архитектура iOS-приложения (И. Чирков)Viper - чистая архитектура iOS-приложения (И. Чирков)
Viper - чистая архитектура iOS-приложения (И. Чирков)
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
 
Сложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворковСложные социальные приложения с помощью JS MVC фреймворков
Сложные социальные приложения с помощью JS MVC фреймворков
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 

Andere mochten auch

володимир михайлович бехтерев
володимир михайлович бехтеревволодимир михайлович бехтерев
володимир михайлович бехтеревMarina Akulenko
 
володимир михайлович бехтерев
володимир михайлович бехтеревволодимир михайлович бехтерев
володимир михайлович бехтеревMarina Akulenko
 
ECMAScript: past, present and future
ECMAScript: past, present and futureECMAScript: past, present and future
ECMAScript: past, present and futureKseniya Redunova
 
Mod lit pwer point Abstractionism
Mod lit pwer point AbstractionismMod lit pwer point Abstractionism
Mod lit pwer point Abstractionismmodlitpwrpnt
 
Social security
Social securitySocial security
Social securityJami Lea
 
Stylish visualisations with D3.js (OdessaJS)
Stylish visualisations with D3.js (OdessaJS)Stylish visualisations with D3.js (OdessaJS)
Stylish visualisations with D3.js (OdessaJS)Kseniya Redunova
 
Studiu alexandru macedon
Studiu alexandru macedonStudiu alexandru macedon
Studiu alexandru macedonCiric Geanina
 
Sistem Kontrol Pada Kipas Angin
Sistem Kontrol Pada Kipas AnginSistem Kontrol Pada Kipas Angin
Sistem Kontrol Pada Kipas AnginMughni Syahid
 
Entrepreneurs & Social Media
Entrepreneurs & Social MediaEntrepreneurs & Social Media
Entrepreneurs & Social MediaZiggy Chau
 
Kingston University AR Drone game-final report.pdf
Kingston University AR Drone game-final report.pdfKingston University AR Drone game-final report.pdf
Kingston University AR Drone game-final report.pdfAnne David
 
AVTechnology August Issue
AVTechnology August IssueAVTechnology August Issue
AVTechnology August Issueravenind
 

Andere mochten auch (15)

2013 class announcement
2013 class announcement2013 class announcement
2013 class announcement
 
володимир михайлович бехтерев
володимир михайлович бехтеревволодимир михайлович бехтерев
володимир михайлович бехтерев
 
володимир михайлович бехтерев
володимир михайлович бехтеревволодимир михайлович бехтерев
володимир михайлович бехтерев
 
ECMAScript: past, present and future
ECMAScript: past, present and futureECMAScript: past, present and future
ECMAScript: past, present and future
 
Mod lit pwer point Abstractionism
Mod lit pwer point AbstractionismMod lit pwer point Abstractionism
Mod lit pwer point Abstractionism
 
Social security
Social securitySocial security
Social security
 
Sdlc models
Sdlc modelsSdlc models
Sdlc models
 
Stylish visualisations with D3.js (OdessaJS)
Stylish visualisations with D3.js (OdessaJS)Stylish visualisations with D3.js (OdessaJS)
Stylish visualisations with D3.js (OdessaJS)
 
RaphaëlJS magic
RaphaëlJS magicRaphaëlJS magic
RaphaëlJS magic
 
Studiu alexandru macedon
Studiu alexandru macedonStudiu alexandru macedon
Studiu alexandru macedon
 
Sistem Kontrol Pada Kipas Angin
Sistem Kontrol Pada Kipas AnginSistem Kontrol Pada Kipas Angin
Sistem Kontrol Pada Kipas Angin
 
Entrepreneurs & Social Media
Entrepreneurs & Social MediaEntrepreneurs & Social Media
Entrepreneurs & Social Media
 
Kingston University AR Drone game-final report.pdf
Kingston University AR Drone game-final report.pdfKingston University AR Drone game-final report.pdf
Kingston University AR Drone game-final report.pdf
 
Marionette talk 2016
Marionette talk 2016Marionette talk 2016
Marionette talk 2016
 
AVTechnology August Issue
AVTechnology August IssueAVTechnology August Issue
AVTechnology August Issue
 

Ähnlich wie MarionetteJS. Shall we dance?

Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETDev2Dev
 
Модульная структура
Модульная структураМодульная структура
Модульная структураDenis Tsvettsih
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftAnton Loginov
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
UAFPUG6 - PureMVC
UAFPUG6 - PureMVCUAFPUG6 - PureMVC
UAFPUG6 - PureMVCmandrew182
 
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryUafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryMax Rozdobudko
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?buranLcme
 
Распределённые приложения. Часть 1. «Клиент и ядро бизнес-логики»
Распределённые приложения. Часть 1.
«Клиент и ядро бизнес-логики»Распределённые приложения. Часть 1.
«Клиент и ядро бизнес-логики»
Распределённые приложения. Часть 1. «Клиент и ядро бизнес-логики»Fedor Malyshkin
 
Enterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianEnterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianSergiy Shychynov
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptDenis Latushkin
 
Виртуализация
ВиртуализацияВиртуализация
ВиртуализацияDysihka
 
Mate framework
Mate frameworkMate framework
Mate frameworkBugzHunter
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
C# Desktop. Занятие 15.
C# Desktop. Занятие 15.C# Desktop. Занятие 15.
C# Desktop. Занятие 15.Igor Shkulipa
 

Ähnlich wie MarionetteJS. Shall we dance? (20)

Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Модульная структура
Модульная структураМодульная структура
Модульная структура
 
Genome
GenomeGenome
Genome
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
UAFPUG6 - PureMVC
UAFPUG6 - PureMVCUAFPUG6 - PureMVC
UAFPUG6 - PureMVC
 
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryUafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
 
PureMVC and Papervision
PureMVC and PapervisionPureMVC and Papervision
PureMVC and Papervision
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
 
Распределённые приложения. Часть 1. «Клиент и ядро бизнес-логики»
Распределённые приложения. Часть 1.
«Клиент и ядро бизнес-логики»Распределённые приложения. Часть 1.
«Клиент и ядро бизнес-логики»
Распределённые приложения. Часть 1. «Клиент и ядро бизнес-логики»
 
Enterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianEnterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russian
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на Javascript
 
Виртуализация
ВиртуализацияВиртуализация
Виртуализация
 
Mate framework
Mate frameworkMate framework
Mate framework
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
C# Desktop. Занятие 15.
C# Desktop. Занятие 15.C# Desktop. Занятие 15.
C# Desktop. Занятие 15.
 

MarionetteJS. Shall we dance?

  • 1. MARIONETTE SHALL WE DANCE? Ксения Редунова @Katidotk
  • 3. • Минималистичная, простая и гибкая • Отличная событийная архитектура • Реализация Model/Collection для REST • Хорошее разделение кода MVW ПЛЮСЫ
  • 4. • Минималистичная :) • Слишком легко прийти не туда • Нет основного класса Application • Нет вложенных иерархий вью • Нет организации layouts (header/footer/sidebar/content etc) • Метод render не делает ничего по умолчанию • Управление памятью МИНУСЫ
  • 6. • Составная библиотека для упрощения разработки крупномасштабных приложений • Представляет набор общих паттернов проектирования и реализации • Сокращает объем стандартного кода благодаря типам вью • Содержит вложенные вью • Управляет памятью • Объединяет событийную архитектуру и агрегатор событий
  • 7. Marionette.Application •Управление приложжением - start, stop, и другая функциональность •Модульность •На самом деле,“application” это просто объект
  • 10. MARIONETTE VIEW MAGIC • Рендеринг есть и привязан к изменениям модели • Управление шаблоном • Содержит UI object • Обеспечивает метод .close() • Расширяемые
  • 13. Marionette.ItemView • Вью, который рендерится на основании данных модели • атрибут “model” • атрибут “template” • рендерится автоматически • modelEvents – методы вью вызываются на событиях модели
  • 14. UI OBJECT UI объект создает кэшированные атрибуты, которые указывают на объекты, выбранные jQuery
  • 15. Marionette.CollectionView • Вью рендерится на основании данных из Collection • Автоматически перерендерится на событиях add/ remove/reset/etc • Атрибут childView, который автоматически инстанциируется и свяжется с model
  • 17. Marionette.CompositeView • CompositeView = CollectionView + template • Комбинация ItemView и CollectionView • Рендерит элементы Backbone.Collection внутри wrapper • Наследует Marionette.CollectionView
  • 18. MODEL EVENTS & COLLECTION EVENTS
  • 20.
  • 21. REGION • Вью, предназначенное для управления жизненным циклом других вью • Рендерит экземпляр вью и добавляет в DOM • “Мост” между DOM и backbone
  • 23. LAYOUT • Отличие от ItemView - содержит в себе регионы • Хорошо подходит на роль “виджета” с несколькими вью
  • 26. MESSAGING BUS •Event события уровня приложения •Commands исполнение команд •Request/Response запрос определенных значений/состояний
  • 27. EVENT AGGREGATOR • pub/sub • trigger/bind • Оповещение о событии разных частей приложения (“user:logged-in”) • События уровня приложения близки к глобальным вызовам функций • Различные типы событий, пространства имен определяют семантику
  • 29. COMMANDS Применяются для обеспечения функциональности, которая обрабатывается в одной точке, но возникает в разных точках • Подписаться на исполнение команды - один раз • Пример: сохранение • cmd-s • Clicking a toolbar button • Choosing File => Save from the menubar
  • 31. REQUEST / RESPONSE • Применяется, когда нам нужно запросить информацию от другой части приложения • Для данных уровня приложения (например, состояние корзины пользователя) • Отличие от Events - намерение. Событие возникает как есть, а Request запрашивает специфичную информацию • Исполняет запрос один подписчик • Легко злоупотребить, как и в случае с другими глобальными объектами
  • 32. REQUEST / RESPONSE // Set up an object to reply to a request. In this case, // whether or not its visible. myObject.reply('visible', this.isVisible); // Get whether it's visible or not. var isViewVisible = myObject.request('visible');
  • 33. Backbone.Radio.channel // Get a reference to the channel named 'user' var userChannel = Backbone.Radio.channel('user'); userChannel.on('some:event', function() { console.log('An event has happened!'); }); userChannel.reply('some:request', 'food is good'); userChannel.trigger('some:event'); Объединение Backbone.Events and Radio.Requests
  • 35. УправлениеViews: • Дочерние views - Backbone.BabySitter • Marionette.Region. Содержит html элемент и умеет в него вставлять содержимое других view • Marionette.RegionManager • Marionette.TemplateCache Marionette.Application Marionette.AppRouter Шина сообщений: • Application.vent - экземпляр Backbone.Wreqr.EventAggregator. pub/sub. • Application.commands - экземпляр Backbone.Wreqr.Commands. Подписаться на исполнение команды - 1 раз • Application.reqres - экземпляр Backbone.Wreqr.RequestResponse. Исполняет запрос только один подписчик
  • 36. ПОЛЕЗНОЕ MarionetteJS.org (Derick Bailey) BackboneRails.com (Brian Mann) “Marionette: gentle introduction” by David Sulc