Dojo Toolkit
Dojo Toolkit — это свободная кроссплатформенная JavaScript-библиотека с открытым исходным кодом, предназначенная для разработки клиентских веб-приложений и веб-интерфейсов. Dojo предоставляет разработчикам модульную архитектуру, набор виджетов, систему обработки событий, средства для работы с AJAX, анимацией, графикой (включая Canvas, SVG и VML), а также инструменты для создания Rich Internet Applications (RIA). Библиотека известна своей ориентацией на корпоративную разработку, где требуются стабильность, масштабируемость и поддержка сложной функциональности.
История
Создание и ранние версии
Проект Dojo был основан в 2004 году компанией Dojo Foundation, которая позже стала частью OpenJS Foundation. Первоначальная версия (0.4) была выпущена в 2005 году. Основными создателями считаются Алекс Расселл, Дилан Шиман и Дэвид Болликер. Целью проекта было создание универсального инструментария для упрощения разработки сложных веб-интерфейсов, не привязанного к конкретному браузеру.
Развитие и версии 1.x
В 2007 году вышла версия 1.0, которая закрепила за Dojo репутацию мощной и стабильной библиотеки. Версии 1.x активно развивались до середины 2010-х годов, получив широкое распространение в крупных корпоративных системах (например, в IBM, Cisco, Siemens, а также в российской платформе «1С-Битрикс» для построения визуальной части корпоративных порталов). В версиях 1.x были реализованы:
- Модульная система (dojo.require).
- Полноценный набор виджетов (Dijit).
- Инструменты для построения графиков (dojox.charting).
- Поддержка анимации и эффектов.
Эра версий 2.0 и упадок популярности
Начиная с 2015 года, команда Dojo приступила к разработке версии 2.0, которая кардинально переработала архитектуру библиотеки. В 2019 году вышел Dojo 6 (версия 2.0, переименованная в 6 по новой схеме нумерации). Новая версия полностью отказалась от устаревших механизмов (включая dojo.require) в пользу современной модульной системы ES6, TypeScript и виртуального DOM, что сделало её более похожей на фреймворки типа React или Vue.js. Однако к этому времени рынок веб-разработки уже был занят более лёгкими и быстро освоением фреймворками (React, Angular, Vue.js), и Dojo 2.0 не получил массового распространения. Последние стабильные релизы в версии 1.x (например, 1.16) выходили в 2019 году, а поддержка версии 2.0 была сведена к минимуму. На 2025 год Dojo Toolkit считается проектом, находящимся в состоянии поддержки устаревших систем, и практически не используется для новых разработок.
Классификация и архитектура
Основные компоненты
Dojo Toolkit традиционно делится на три ключевых пакета:
- Dojo (ядро) — базовая библиотека: утилиты, AJAX, DOM-манипуляции, система событий, модульная система (в версиях 1.x — dojo.require, в 2.x — TypeScript/ES6).
- Dijit — библиотека графических виджетов (кнопки, текстовые поля, таблицы, деревья, окна, выпадающие списки, календари и т.д.). Виджеты имеют единый API и поддерживают темы оформления.
- DojoX — набор экспериментальных расширений, включающих средства для работы с графикой (Charting), хранилищами данных (Data), веб-сокетами, геолокацией и т.д.
Модульная система
В версиях 1.x Dojo использовал собственную асинхронную модульную систему, основанную на функции require(). Разработчик писал код вида: ``javascript require(["dijit/form/Button", "dojo/dom"], function(Button, dom){ // использование виджетов }); `` В версии 2.0 и выше библиотека перешла на стандартную систему модулей ES6/TypeScript, отказавшись от устаревшего синтаксиса.
Устройство и характеристики
Система виджетов (Dijit)
Dijit является одной из самых развитых библиотек виджетов среди ранних JavaScript-фреймворков. Виджеты реализованы как классы, поддерживающие наследование, расширение и переопределение. Каждый виджет может содержать:
- Шаблон — HTML-разметка, определяющая отображение виджета.
- Жизненный цикл — методы создания, отображения, обновления и уничтожения (
startup,postCreate,destroy). - Параметры — настраиваемые атрибуты, передаваемые при создании.
- Поддержка инклюзивности (a11y) — встроенная поддержка клавиатурной навигации и экранных дикторов.
Работа с DOM и событиями
Dojo предоставляет кросcбраузерные обертки для работы с DOM-деревом (клонирование, удаление, изменение стилей). Система событий (dojo/on) поддерживает как стандартные DOM-события, так и пользовательские (кастомные) события, а также делегирование.
AJAX и взаимодействие с сервером
Для AJAX-запросов используется модуль dojo/request. Поддерживаются методы GET, POST, PUT, DELETE, загрузка JSON, XML, HTML-фрагментов. Также имеется инструмент dojo/request/iframe для отправки запросов через скрытые iframe (для загрузки файлов).
Средства для работы с графикой
Пакет dojox/charting позволяет строить столбчатые, линейные, круговые, точечные диаграммы и графики с возможностью анимации, масштабирования и наложения слоев. Поддерживается рендеринг через SVG, Canvas и VML (для старых браузеров). Также имеется средство для работы с векторными изображениями — dojox/geo/charting.
Применение
Корпоративные системы и CRM
Dojo Toolkit наибольшее распространение получил в сфере создания сложных корпоративных приложений с высокой степенью интеграции. Примеры использования:
- SAP — в ряде компонентов интерфейса.
- IBM — в продуктах для автоматизации бизнес-процессов.
- ArcGIS (ESRI) — в веб-картографических сервисах для построения сложных интерфейсов управления данными.
- Российская платформа «1С-Битрикс» (коробочные версии) — для построения административных панелей и интерактивных компонентов порталов (до внедрения современных фреймворков).
Наследие
На 2025 год Dojo Toolkit продолжает использоваться в тех системах, где он был внедрён в период своей популярности (2005–2015 гг.). Новые проекты на его основе практически не создаются, за исключением ситуаций, когда требуется строгое наследование архитектуры устаревших систем. Поддержка версий 1.x официально прекращена.
Достоинства и недостатки
Достоинства
- Высокая стабильность — Dojo прошёл многолетнюю проверку в крупных корпоративных продуктах.
- Богатая библиотека виджетов — готовая коллекция элементов интерфейса, включая сложные таблицы, деревья, календари и т.д.
- Тщательное тестирование — Dojo включал собственную систему модульного тестирования и инструменты для функционального тестирования.
- Кроссплатформенность — поддержка всех основных браузеров своего времени, включая Internet Explorer 6–9 (без дополнительных полифиллов).
- Структурированный код — чёткая модульная система облегчала поддержку больших проектов.
Недостатки
- Сложность изучения — по сравнению с jQuery или современными фреймворками, API Dojo 1.x был громоздким и требовал много времени на освоение.
- Размер библиотеки — ядро Dojo вместе с виджетами занимало несколько сотен килобайт, что замедляло загрузку страниц.
- Снижение популярности — с появлением React, Vue.js и Angular в 2014–2016 годах Dojo уступил позиции как более тяжелый и менее гибкий инструмент.
- Сложность интеграции с современными инструментами — Dojo 1.x плохо сочетался с Webpack, Babel и другими современными сборщиками, что усложняло его использование в новых проектах.
Интересные факты
- Dojo Toolkit предоставил первую реализацию графиков на SVG в браузере (с поддержкой плавной анимации) ещё до того, как эта технология стала широко распространена.
- В 2010 году Dojo стал первой JavaScript-библиотекой, в которой появилась полноценная поддержка WebSocket (в рамках DojoX).
- Многие виджеты Dijit до сих пор используются в OpenCMS, Alfresco и других системах управления контентом (CMS).
Источники
- Официальная документация Dojo Toolkit (архив версий 1.x)
- Статья «Dojo Toolkit» в английской Википедии (версия 2024 года)
- Документация OpenJS Foundation
- Книги: «Dojo: The Definitive Guide» (O'Reilly Media, 2008)
- Материалы конференций JSConf, JS Remote Conf (2009–2015)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →