Java, UX, HTML, CSS, WEB-design

Тщательное введение в Backbone.Marionette (часть 1)

[ad_1]

  • Джозеф Циммерман

  • 0 Комментарии

Тщательное введение в Backbone.Marionette (часть 1)

  • 8 минут чтения

  • Кодирование, Фреймворки, JavaScript

Краткое резюме ↬

Backbone.js быстро становится самой популярной средой для создания модульных клиентских приложений JavaScript. Во многом это связано с его низкий порог входа; начать работу с ним очень просто.

Чтобы помочь вам раскрыть весь потенциал Marionette, мы подготовили целую электронную книгу с полезными практическими примерами, которая также доступна в Smashing Library. — Ред.

Backbone.js быстро становится самой популярной средой для создания модульных клиентских приложений JavaScript. Во многом это связано с низким барьером для входа; начать работу с ним очень просто. Однако, в отличие от Ember.js, Backbone, будучи настолько минималистичным, также оставляет многое на усмотрение разработчика.

Дальнейшее чтение на SmashingMag:

  • Тщательное введение в Backbone.Marionette (Часть 2)
  • Тщательное введение в Backbone.Marionette (часть 3)
  • Советы и шаблоны Backbone.js
  • Введение в полноценный JavaScript

Итак, как только вы начинаете работать с более сложными приложениями, это уже не так просто. Backbone.Marionette был создан, чтобы облегчить многие проблемы роста развития Backbone. Backbone.Marionette «сделать[s] ваши приложения Backbone.js танцуют с составной архитектурой приложения!», — говорит его автор.

Еще после прыжка! Продолжить чтение ниже ↓

Эта «составная» архитектура относится в основном к многочисленным типам представлений, которые были предоставлены для помощи в управлении подпредставлениями. Сегодня мы не будем обсуждать эти представления (хотя мы коснемся регионов, которые являются небольшой частью управления подпредставлениями, предлагаемыми Marionette), но вы можете найти документацию по этому проекту в репозитории GitHub. Он предлагает множество компонентов, расширяющих Backbone и позволяющих вам писать меньше шаблонов и делать больше вещей практически без проблем, особенно когда речь идет о представлениях.

Центральный объект приложения

В большинстве случаев, когда кто-то создает Backbone-приложение, он создает центральный объект, к которому все привязано, на который часто ссылаются как App или Application. Backbone не предлагает ничего, из чего можно сделать этот объект, поэтому большинство людей просто создают основной маршрутизатор и сделайте это объектом приложения. Хотя это здорово, что люди прикрепляют вещи к центральному объекту, чтобы глобальное пространство имен не было таким запутанным, маршрутизатор не был предназначен для решения этой задачи.

У Дерика Бэйли, создателя «Марионетки», была идея получше. Он создал «класс», из которого вы можете создать экземпляр объекта, специально предназначенный для выполнения обязанностей корневого объекта всего приложения. Вы создаете новое приложение с var App = new Backbone.Marionette.Application()а затем, когда все настроено, вы запускаете приложение с App.start(options). я обсужу options скоро аргумент. Пока просто помните, что это необязательно.

Инициализаторы

Одна из самых крутых вещей в Марионетт Application это инициализаторы. Когда ваш код является модульным, при запуске приложения потребуется инициализировать несколько частей. Вместо того, чтобы заполнить main.js файл с загрузкой кода для инициализации всех этих объектов, вы можете просто настроить модули для инициализации в коде для модуля. Вы делаете это, используя addInitializer. Например:

var SomeModule = function(o){
  // Constructor for SomeModule
};

App.addInitializer(function(options) {
  App.someModule = new SomeModule(options);
});

Все инициализаторы, добавленные таким образом, будут запущены, когда App.start называется. Обратите внимание на options аргумент передается в инициализатор. Это тот же самый объект, который передается при вызове App.start(options). Это отлично подходит для передачи конфигурации, чтобы каждый модуль мог ее использовать.

Несколько событий также запускаются при выполнении этих инициализаторов:

  • initialize:before Срабатывает непосредственно перед запуском инициализаторов.
  • initialize:after Срабатывает сразу после завершения всех инициализаторов.
  • start Срабатывает после initialize:after.

Вы можете прослушивать эти события и осуществлять еще больший контроль. Слушайте эти события следующим образом:

App.on('initialize:before', function(options) {
  options.anotherThing = true; // Add more data to your options
});
App.on('initialize:after', function(options) {
  console.log('Initialization Finished');
});
App.on('start', function(options) {
  Backbone.history.start(); // Great time to do this
});

Довольно просто, и это дает вам массу гибкости в том, как вы запускаете свои приложения.

Агрегатор событий

То Application object предоставляет еще больше возможностей для отделения приложения Backbone за счет использования агрегатора событий. Некоторое время назад я написал пост о масштабируемых приложениях JavaScript, в котором я упомянул, что модули системы должны совершенно не знать друг о друге, и что единственный способ, которым они должны иметь возможность взаимодействовать друг с другом, это посредством общепрограммных событий. Таким образом, каждый модуль, которому это небезразлично, может прослушивать изменения и события, которые им нужны, чтобы реагировать на них так, чтобы ничто другое в системе даже не подозревало об их существовании.

Marionette делает такую ​​развязку в значительной степени возможной благодаря агрегатору событий, который автоматически присоединяется к объекту приложения. Хотя это только один из механизмов, о которых я писал в этой статье, он является началом и может быть очень полезен даже в небольших приложениях.

Агрегатор событий доступен через свойство в приложении, называемое vent. Вы можете подписаться и отписаться от событий просто через on и off методы соответственно (или bind и unbind, Если вы предпочитаете). Эти функции могут показаться знакомыми, потому что агрегатор событий является просто расширением Backbone. Event объект. На самом деле, единственная новая вещь, о которой вам нужно беспокоиться, это то, что мы используем события для объекта, который должен быть доступен везде в вашем приложении, чтобы каждая часть вашего приложения могла общаться через него. Агрегатор событий также доступен как отдельный модуль, так что вы можете добавить его к любому объекту, как вы хотите, точно так же, как Backbone. Event.

Регионы

Region — это еще один модуль для Marionette, который позволяет легко прикреплять представления к различным областям HTML-документа. Я не буду вдаваться в подробности о том, как здесь работают регионы — это тема для другого дня, — но я кратко расскажу об этом и объясню, как их использовать с Application.

Регион — это объект, который обычно создается с помощью new Backbone.Marionette.Region({ el: ‘selector’}) — который управляет областью, к которой вы прикрепляете вид. Вы бы добавили представление и автоматически визуализировали бы его, используя show. Затем вы можете закрыть это представление (это означает, что оно удалит его из DOM и, если вы используете одно из представлений Marionette, отмените все привязки, сделанные представлением) и отобразите другое представление, просто вызвав show снова, или вы можете просто закрыть представление, вызвав close. Регионы могут делать больше, но тот факт, что они управляют рендерингом и закрытием для вас с помощью одного вызова функции, делает их чрезвычайно полезными. Вот пример кода для тех, кто говорит кодом, а не английским языком:

// Create a region. It will control what's in the #container element.
var region = new Backbone.Marionette.Region({
  el: "#container"
});

// Add a view to the region. It will automatically render immediately.
region.show(new MyView());

// Close out the view that's currently there and render a different view.
region.show(new MyOtherView());

// Close out the view and display nothing in #container.
region.close();

Если вы хотите Region непосредственно на объекте вашего приложения (например, App.someRegion), есть простой способ быстро добавить его: addRegions. Есть три способа использования addRegions. В любом случае вы должны передать объект, имена свойств которого будут добавлены в приложение как регионы, но значение каждого из них может быть разным в зависимости от того, каким способом вы хотите это сделать.

Селектор

Просто укажите селектор, и будет создана стандартная область, использующая этот селектор в качестве своей. el имущество.

App.addRegions({
  container: "#container",
  footer:    "#footer"
});

// This is equivalent to
App.container = new Backbone.Marionette.Region({el:"#container"});
App.footer    = new Backbone.Marionette.Region({el:"#footer"});

Пользовательский тип региона

Вы можете расширить Region для создания собственных типов регионов. Если вы хотите использовать свой собственный тип региона, вы можете использовать приведенный ниже синтаксис. Обратите внимание, что с этим синтаксисом el должен быть уже определен в вашем типе региона.

var ContainerRegion = Backbone.Marionette.Region.extend({
  el: "#container", // Must be defined for this syntax
  // Whatever other custom stuff you want
});

var FooterRegion = Backbone.Marionette.Region.extend({
  el: "#footer", // Must be defined for this syntax
  // Whatever other custom stuff you want
});

// Use these new Region types on App.
App.addRegions({
  container: ContainerRegion,
  footer:    FooterRegion
});

// This is equivalent to:
App.container = new ContainerRegion();
App.footer    = new FooterRegion();

Пользовательский тип региона с селектором

Если вы не определите el — или вы хотите переопределить его — в своем пользовательском типе региона, вы можете использовать этот синтаксис:

var ContainerRegion = Backbone.Marionette.Region.extend({});

var FooterRegion = Backbone.Marionette.Region.extend({});

// Use these new Region types on App.
App.addRegions({
  container: {
    regionType: ContainerRegion,
    selector:   "#container"
  },
  footer: {
    regionType: FooterRegion,
    selector:   "#footer"
  }
});

// This is equivalent to:
App.container = new ContainerRegion({el:"#container"});
App.footer    = new FooterRegion({el:"#footer"});

Как видите, добавить регионы для всего приложения очень просто (особенно если вы используете обычный Region type), и они добавляют много полезной функциональности.

Вывод

Как вы уже видите, Marionette добавляет массу замечательных функций, упрощающих разработку Backbone, и мы рассмотрели только один из многих модулей, которые он предоставляет (плюс, мы затронули пару других модулей, которые Application сам использует, но о них можно узнать еще много). Я надеюсь, что это немного увлечет программистов Backbone и вызовет у вас желание прочитать остальную часть этой серии, когда я расскажу о других модулях.

Авторы изображения на стартовой странице: Дмитрий Барановский.

Сокрушительная редакция
(аль)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Тщательное введение в Backbone.Marionette (часть 1)

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Тщательное введение в Backbone.Marionette (часть 1)

Название: Тщательное введение в Backbone.Marionette (часть 1) . Краткое описание: [ad_1] ⭐ Джозеф . Дата публикации: 14.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»