Обзор архитектуры Dojo

Как вы увидите дальше, использование термина инструментальный набор применительно к Dojo далеко не случайно. В дополнение к тому, что он содержит своего рода стандартную библиотеку языка Java Script, в состав Dojo также входят: коллекция готовых к употреблению графических компонентов (виджетов), для использования которых если и требуется писать программный код, то только минимального объема; инструменты сборки; платформа тестирования и многое другое. В этом разделе вашему вниманию предлагается обзор архитек туры Dojo с общих позиций. Как вы убедитесь в этом позднее, организация остальной части книги в значительной степени определяется архитектурой нструментария. Хотя библиотека DojoX представлена отдельно от Dijit, тем не менее ресурсы DojoX можно построить на основе ресурсов Dijit, так же как вы можете создавать свои собственные виджеты на любых комбинациях ресурсов из Dijit и DojoX.

Base
Ядром Dojo является Base – чрезвычайно компактная, высоко оптимизированная библиотека, образующая основу для всего остального инструментария. Кроме всего прочего библиотека Base содержит удобные языковые конструкции и утилиты AJAX, систему пакетов, позволяющую добавлять ресурсы из Dojo прямо во время выполнения, а не во время загрузки страницы.


Эта библиотека также предоставляет инструменты для создания и управления иерархиями наследования, средства для выполнения практически универсальных запросов к дереву DOM с использованием селекторов CSS3 и конструкцию, нормализующую модели событий DOM, имеющиеся в разных броузерах. Все, что находится в библиотеке Base, доступно как функции или атрибуты пространства имен верхнего уровня dojo.*. Библиотека Base представлена единственным файлом dojo.js, который при передаче по сети занимает порядка 30 Кбайт. Если вы задумаетесь над тем, что раз мер большинства рекламных Flashроликов, наводнивших Всемирную паутину, составляет значительно больше 30 Кбайт, то это число покажется вам удивительно маленьким.

Еще одна интереснейшая особенность библиотеки Base состоит в том, что она способна выполнять самонастройку Dojo автоматически, достаточно лишь включить файл dojo.js в страницу. В упрощенном пред ставлении процедура самонастройки включает определение параметров среды, сглаживание различий между броузерами и загрузку пространства имен dojo. Кроме того, могут использоваться дополнительные параметры для выполнения автоматического парсинга любых виджетов на странице и выполнения других задач по инициализации.

Библиотека Base предоставляет великое множество вспомогательных функций для реализации многих стандартных операций, которые часто бывает необходимо выполнить для достижения поставленных целей.


Даже если вы ничего больше не будете использовать из набора инструментальных средств, библиотека Base наверняка станет для вас ценным ресурсом, от которого уже не захочется отказаться, стоит только почувствовать, как она позволяет повысить производитель ность труда. Без библиотеки Base не будет и Dojo – все, что имеется в комплекте инструментальных средств Dojo, так или иначе, зависит или построено на основе этой библиотеки.

Core
Библиотека Core основана на библиотеке Base и предлагает дополнительные средства для парсинга виджетов, улучшенные анимационные эффекты, средства реализации механизма «перетащил и бросил», интернационализации (i18n), обработки кнопки «Назад», управления cookie и многого другого. Ресурсы, доступные в Core, используются довольно часто и обеспечивают фундаментальную поддержку для выполнения наиболее распространенных операций, но они не считаются достаточно универсальными, чтобы включить их в состав библиотеки Base. Хотя критерии внесения ресурсов в состав библиотеки Core можно считать несовершенными, но система управления пакетами в инструментальном наборе Dojo упрощает подключение дополнительных модулей и ресурсов по мере необходимости с помощью простого механизма, который работает на манер директивы #include из языка C или инструкции import из языка Java.

Вообще, различия между Base и Core определяются просто: если явно импортируемый ресурс, внешний по отношению к dojo.js, принадлежит к пространству имен dojo, значит, он является частью библиотеки Core.


Обычно средства из библиотеки Core не входят непосредственно в пространство имен библиотеки Base, а составляют пространства имен более низкого уровня, такие как dojo.fx или dojo.data.

Dijit
Сказать, что Dojo – это всего лишь стандартная библиотека языка JavaScript, значит ничего не сказать. Кроме всего прочего в состав инструментального набора Dojo входит Dijit (сокращенно от «Dojo widget») – фантастическая библиотека виджетов, готовых к использованию, для работы с которыми часто вообще не требуется писать программный код JavaScript. Диджиты соответствуют общепринятым стандартам доступности, таким как ARIA1, и поставляются с предварительными интернациональными настройками для большинства распространенных языковых настроек. Библиотека Dijit построена непосредственно на базе Core (и тем самым полностью зависит от целостности Core), по этому, когда вам потребуется создать свой собственный виджет, вы будете использовать те же самые стандартные блоки, которые использовались для всего, что имеется в Dijit. Виджеты, которые создаются средствами Dojo, обладают высокой степенью переносимости и легко могут разворачиваться на любом вебсервере или даже запускаться локально, вообще без участия вебсервера, с помощью протокола file://.

Включение диджитов в вебстраницу выполняется простым определением специального атрибута dojoType внутри обычного тега HTML – во плотившаяся в реальность мечта дизайнеров и пользователей, которых мало интересует (если вообще интересует) программирование на языке JavaScript. Основное преимущество от использования библиотеки Dijit состоит в том, что она фактически позволяет получать богатые функциональные возможности без необходимости погружаться в детали реализации. Даже если вы занимаетесь созданием библиотек или разработкой собственных виджетов, следование стилю и соглашениям, принятым в Dijit, обеспечит вашим виджетам высокую переносимость и простоту в использовании, составляющим основу любого программного компонента многократного использования.

Вся линейка виджетов библиотеки Dijit грубо может быть разделена на прикладные виджеты общего назначения, такие как индикаторы хода выполнения процесса и модальные диалоги, виджеты верстки, такие как вкладки и раздвижные панели, и виджеты форм, которые представляют собой значительно улучшенные версии стандартных
элементов, такие как кнопки и разнообразные поля ввода.

DojoX
DojoX – это коллекция проектов, название которой происходит от «Dojo Extensions» (расширения для Dojo), хотя ее часто называют «Extensions and Experimental» (расширения и экспериментальные реализации). Проекты «расширений» в DojoX – это стабильные виджеты и ресурсы, которые представляют собой ценные дополнения, назначение которых просто не соответствует тому, чтобы поместить их в библиотеку Core или в библиотеку Dijit. К «экспериментальным» проектам относят виджеты, которые подвержены частым изменениям и находятся на начальной стадии разработки.

В составе каждого проекта, входящего в коллекцию DojoX, должен присутствовать файл README, где описывается состояние проекта. Проекты в DojoX обычно стремятся соответствовать инициативам по интернационализации и обеспечению доступности совместимым с Dijit способом, но вообще это редкий случай, когда такое соответствие находится на достаточно высоком уровне. Как бы то ни было, реализация значительного числа механизмов, используемых в действующих приложениях, находится именно в коллекции DojoX, включая виджет табличного представления данных, процедуры преобразования данных для наиболее типичных разновидностей вебслужб и т. д. Кроме того, в состав коллекции DojoX входят испытательный полигон и инкубатор для новых идей, что гарантирует отсутствие угрозы стандартному и стабильному прикладному интерфейсу ресурсов в Core и Dijit.

В этом смысле DojoX обеспечивает тонкий баланс в решении критических проблем, занимающих центральное место в любом проекте, под держиваемом сообществом.

Util
Util – это коллекция вспомогательных инструментов Dojo, включая платформу модульного тестирования и инструменты сборки, позволяющие создавать свои версии библиотеки инструментальных средств Dojo для собственных нужд. Платформа модульного тестирования, DOH1, не имеет прямого отношения к Dojo и представляет собой простой набор конструкций, которые могут использоваться для автоматизации проверки качества любого программного кода JavaScript. В конце концов, вы ведь хотите реализовать четкое и систематическое тестирование своего программного кода JavaScript, разве не так? Основное назначение инструментов сборки состоит в том, чтобы сократить размер вашего программного кода и объединить его в несколько слоев, где каждый слой не что иное, как набор других файлов JavaScript. Сжатие производится посредством инструмента ShrinkSafe – адаптированной проектом Mozilla версии механизма из Rhino JavaScript, который сжимает программный код JavaScript, не повреждая общедоступный программный интерфейс, а объединение выполняется с помощью коллекции сценариев, которые также были разработаны для Rhino. Другие вспомогательные компоненты в библиотеке Util вы полняют такие операции, как встраивание строк шаблонов HTML в файлы JavaScript – еще один прием, позволяющий уменьшить задержки.

Подобно DOH механизм ShrinkSafe может применяться независимо от Dojo, и нет никаких причин, чтобы не использовать его при подготовке рабочей версии программного кода JavaScript, особенно если учесть, что он позволяет сократить объем кода JavaScript до 50% и больше.

Разница во времени между загрузкой множества крупных файлов JavaScript посредством серии синхронных запросов и получением одного или двух сжатых файлов JavaScript может оказаться весьма существенной.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
dojo.addOnLoad
dojo.byId
dojo.connect
Исследование Dijit
Исследование Dojo с помощью Firebug