DojoX
DojoX — это подпроект библиотеки Dojo Toolkit, представляющий собой набор экспериментальных, специализированных и нестандартных модулей (виджетов, утилит и расширений), которые не вошли в основное ядро Dojo по причине своей узкой направленности, нестабильности API или зависимости от внешних технологий. DojoX был задуман как инкубатор для новых идей и площадка для тестирования функциональности, которая впоследствии могла быть интегрирована в основные модули Dojo (dojo, dijit, dojox) или выделена в отдельные библиотеки.
История
Проект Dojo Toolkit был основан в 2004 году Алексом Расселом (Alex Russell), Диланом Шиманом (Dylan Schiemann) и Дэвидом Шустером (David Schuster) как открытая JavaScript-библиотека для упрощения разработки веб-приложений. С самого начала архитектура Dojo предполагала модульную структуру, где ядро (dojo) отвечало за базовые утилиты, а набор виджетов (dijit) — за компоненты пользовательского интерфейса. DojoX был создан как третий, дополнительный слой, предназначенный для размещения кода, который ещё не достиг зрелости основного репозитория.
Первые версии DojoX (около 2005–2006 годов) содержали такие модули, как dojox.charting (построение графиков), dojox.grid (таблицы данных) и dojox.drawing (векторное рисование). В 2007 году, с выходом Dojo 1.0, DojoX стал официальной частью дистрибутива, но с явным предупреждением о том, что его API может меняться без сохранения обратной совместимости. В последующие годы (2008–2012) DojoX активно развивался, включая модули для работы с геолокацией, офлайн-хранилищами, 3D-графикой (WebGL) и интеграцией с различными бэкенд-технологиями.
С выходом Dojo 2.0 (2015–2016) архитектура библиотеки была кардинально пересмотрена, и концепция DojoX как отдельного подпроекта была упразднена. Многие модули DojoX были либо перенесены в основное ядро (например, dojox/charting стал частью dijit), либо прекратили поддержку. Последние стабильные версии Dojo 1.x (1.14–1.16) всё ещё содержали DojoX, но с 2020 года проект Dojo Toolkit официально перешёл в режим поддержки, и новые разработки в DojoX не ведутся.
Структура и организация
DojoX был организован как набор независимых пакетов (namespaces), каждый из которых отвечал за определённую функциональность. Пакеты имели собственные зависимости и документацию. Основные пакеты DojoX включали:
- dojox.charting — построение диаграмм и графиков (линейные, столбчатые, круговые, пузырьковые и др.).
- dojox.grid — мощная таблица данных с поддержкой сортировки, фильтрации, редактирования ячеек и виртуальной прокрутки.
- dojox.drawing — инструмент для создания векторной графики и рисования на холсте.
- dojox.embed — интеграция с Flash, QuickTime и другими плагинами.
- dojox.form — расширенные элементы форм (например,
Uploader,FileInput,DropDownSelect). - dojox.gfx — низкоуровневая библиотека для работы с векторной графикой (SVG, VML, Canvas).
- dojox.mobile — виджеты для мобильных устройств (слайдеры, переключатели, списки).
- dojox.offline — инструменты для работы в офлайн-режиме (кеширование, синхронизация).
- dojox.rpc — реализация удалённого вызова процедур (JSON-RPC, XML-RPC).
- dojox.storage — абстракция для работы с клиентскими хранилищами (cookies, Flash Shared Objects, HTML5 LocalStorage).
- dojox.testing — утилиты для тестирования кода.
Каждый пакет мог содержать несколько модулей, а также собственные стили (CSS) и шаблоны (HTML).
Классификация модулей
Модули DojoX можно условно разделить на несколько категорий по степени зрелости и области применения:
Экспериментальные модули
Эти модули имели нестабильный API и часто менялись. К ним относились, например, dojox.analytics (сбор статистики использования), dojox.data (альтернативные источники данных) и dojox.encoding (различные алгоритмы кодирования/декодирования). Они редко использовались в production-среде.
Специализированные модули
Модули, предназначенные для решения конкретных задач, не входящих в основную функциональность Dojo. Примеры: dojox.gesture (обработка жестов на сенсорных экранах), dojox.math (расширенные математические функции), dojox.string (работа со строками, включая форматирование и токенизацию).
Интеграционные модули
Модули, обеспечивающие взаимодействие Dojo с другими технологиями. Например, dojox.ajax (расширения для AJAX-запросов), dojox.io (работа с сокетами, Comet), dojox.jsonPath (запросы к JSON-данным по шаблону XPath).
Модули для мобильных устройств
Пакет dojox.mobile был одним из самых крупных и активно развивавшихся. Он включал виджеты, оптимизированные для сенсорных интерфейсов: dojox.mobile.ScrollableView, dojox.mobile.ToggleButton, dojox.mobile.TabBar, dojox.mobile.SpinWheel и другие. Этот пакет использовался в ранних версиях мобильных приложений на базе Dojo.
Применение
DojoX применялся в основном в веб-приложениях, где требовалась функциональность, выходящая за рамки стандартных возможностей Dojo. Наиболее типичные сценарии:
- Визуализация данных: с помощью
dojox.chartingиdojox.gfxсоздавались интерактивные графики, диаграммы и схемы. Например, в панелях мониторинга или аналитических дашбордах. - Работа с таблицами:
dojox.gridиспользовался для отображения больших объёмов данных (сотни тысяч строк) с возможностью сортировки, фильтрации и редактирования. - Мобильные интерфейсы:
dojox.mobileприменялся для создания нативных по виду мобильных приложений на HTML5, особенно в корпоративных системах. - Офлайн-режим:
dojox.offlineиdojox.storageпозволяли создавать приложения, работающие без постоянного интернет-соединения, например, для полевых работ или в условиях ограниченной связи. - Интеграция с бэкендом:
dojox.rpcиdojox.ioупрощали взаимодействие с серверами через различные протоколы.
Критика и ограничения
DojoX подвергался критике по нескольким причинам:
- Нестабильность API. Из-за экспериментального статуса модули DojoX могли меняться без предупреждения, что создавало проблемы при обновлении версий Dojo. Разработчики часто жаловались на то, что код, написанный для одной версии DojoX, переставал работать в следующей.
- Отсутствие единой документации. Каждый пакет имел свою документацию, часто неполную или устаревшую. Это затрудняло изучение и использование DojoX.
- Раздутый размер. Включение всех модулей DojoX в приложение значительно увеличивало его размер, что было критично для мобильных устройств и медленных соединений. Хотя существовали инструменты для выборочной загрузки (Dojo Builder), многие разработчики не использовали их.
- Устаревание. С появлением HTML5 и современных браузерных API многие функции DojoX (например, офлайн-хранилища, работа с геолокацией, векторная графика) стали доступны нативно, что снизило потребность в библиотеке.
Наследие
Несмотря на критику, DojoX сыграл важную роль в развитии Dojo Toolkit и веб-разработки в целом. Многие идеи, впервые реализованные в DojoX, были впоследствии адаптированы в других библиотеках и фреймворках. Например, концепция виджетов для мобильных устройств, реализованная в dojox.mobile, повлияла на дизайн jQuery Mobile и Sencha Touch. Подход к построению графиков из dojox.charting был использован в D3.js и Highcharts.
После прекращения активной разработки Dojo 1.x в 2020 году DojoX остаётся частью архивных версий Dojo. Некоторые модули, такие как dojox.charting и dojox.grid, всё ещё могут использоваться в legacy-проектах, но их поддержка сообществом практически прекращена. Современные альтернативы DojoX включают React, Vue.js, Angular, а также специализированные библиотеки для визуализации данных (Chart.js, ECharts) и работы с таблицами (AG Grid, Handsontable).
Интересные факты
- DojoX был одним из первых проектов, реализовавших поддержку векторной графики в браузере через SVG и VML (через
dojox.gfx), ещё до появления Canvas и WebGL. - Пакет
dojox.offlineиспользовал Flash Shared Objects для хранения данных, что было одним из немногих способов работы с офлайн-режимом до появления HTML5 LocalStorage. - В DojoX существовал модуль
dojox.robot, который позволял эмулировать действия пользователя (клики, ввод текста) для автоматического тестирования интерфейсов. - Многие модули DojoX были написаны сторонними разработчиками и не поддерживались основной командой Dojo, что приводило к неравномерному качеству кода.
Источники
- Dojo Toolkit Documentation: «DojoX Reference Guide» (архивная версия, 2015).
- Russell, A., Schiemann, D., & Shuster, D. (2008). Dojo: The Definitive Guide. O'Reilly Media.
- «DojoX: The Experimental Playground of Dojo Toolkit» — статья в блоге SitePen (2012).
- Официальный репозиторий Dojo Toolkit на GitHub (история коммитов, 2005–2020).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →