4. • Минималистичная :)
• Слишком легко прийти не туда
• Нет основного класса Application
• Нет вложенных иерархий вью
• Нет организации layouts (header/footer/sidebar/content etc)
• Метод render не делает ничего по умолчанию
• Управление памятью
МИНУСЫ
6. • Составная библиотека для упрощения разработки
крупномасштабных приложений
• Представляет набор общих паттернов проектирования и
реализации
• Сокращает объем стандартного кода благодаря типам
вью
• Содержит вложенные вью
• Управляет памятью
• Объединяет событийную архитектуру и агрегатор
событий
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
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. Исполняет запрос
только один подписчик