Dojo

Dojo Toolkit
Логотип программы Dojo Toolkit
Тип JavaScript toolkit
Разработчик Dojo Foundation
Написана на JavaScript
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 2004
Последняя версия
Репозиторий github.com/dojo/dojo
Лицензия BSD License and the Academic Free License
Сайт dojotoolkit.org

Dojo (додзё) — свободная модульная библиотека JavaScript. Разработана с целью упростить ускоренную разработку основанных на JavaScript или AJAX приложений и сайтов. Разработка библиотеки была начата Алексом Русселом в 2004 году. Библиотека находится под двойной лицензией: BSD License и Academic Free License. Dojo Foundation — некоммерческая организация, созданная для продвижения Dojo.

Dojo используется в Zend Framework, начиная с версии 1.6.0.

Возможности

Элементы интерфейса

Элементы интерфейса dojo — это пакеты, сформированные из компонентов: JavaScript-кода, разметки HTML и CSS. Они могут быть использованы для добавления различных интерактивных возможностей к сайту:

  • меню, закладок, всплывающих подсказок;
  • селекторов даты, времени; часов;
  • сортируемых таблиц, динамических диаграмм, векторной 2D-графики;
  • элементов интерфейса «дерево», с возможностями drag-and-drop (nested sets, вложенные множества);
  • Rich Text Editor;
  • различных HTML-форм с возможностью проверки ввода пользователя;
  • анимированных эффектов, и возможностей построения своих собственных эффектов.

Асинхронная связь

Одной из важных особенностей AJAX-приложений является асинхронная связь между браузером и сервером: благодаря обмену информацией, вид страницы обновляется без перезагрузки страницы. Обычно это делается с помощью JavaScript-объекта XMLHttpRequest. Dojo предоставляет класс-«обёртку» (dojo.io.bind), который позволяет абстрагироваться от различных реализаций XMLHttpRequest в браузерах, в том числе работающих через <iframe>[источник не указан 295 дней]. Используя эту технологию, становится просто создавать приложения, передающие вводимые пользователем данные на сервер. Сервер может ответить на это определённым JavaScript’ом и обновить вид страницы.

JavaScript-программирование

Многие возможности dojo облегчают программирование на JavaScript.

  • Абстракция от среды выполнения; Dojo предоставляет возможности для определения и работы с различными веб-браузерами и другими средами выполнения JavaScript (такими как Rhino).
  • Dojo поддерживает разработку и распространение собственных элементов интерфейса и включает в себя библиотеку утилит для манипуляций с DOM.
  • Система событий, которая позволяет реагировать не только на события DOM, но и на другие события, такие как, например, вызов определённой функции. Это позволяет в большей степени использовать аспектно-ориентированное программирование.
  • Абстрагированный интерфейс для манипулирования JavaScript-классами, предоставляющий возможность наследования и позволяющий расширять существующие классы с помощью набора функций, вместо того, чтобы управлять непосредственно прототипами объектов.

Система пакетов

Dojo предоставляет систему пакетов, облегчающую модульную разработку функциональности пакетов и суб-пакетов. «Загрузочный» скрипт инициализирует набор иерархических пакетных пространств имён: «io», «event», и т. д. — внутри корневого пространства имён «dojo». После инициализации корневого пространства имён, любой пакет Dojo может быть загружен (с помощью XMLHttpRequest или сходного способа) с помощью специальных функций загрузочного скрипта. Возможно также инициализировать дополнительные пространства имён внутри или вне пространства имён «dojo», что позволяет расширять dojo или разрабатывать закрытые пространства имён для сторонних библиотек и приложений. Пакет dojo может содержать множество файлов. Любой пакет или файл могут определять зависимости от других файлов или пакетов. Когда такой пакет загружается, все необходимые зависимости подгружаются автоматически.

Хранилище на стороне клиента

Dojo предоставляет абстрактное хранилище данных на стороне клиента — Dojo Storage. Dojo Storage позволяет веб-приложениям хранить мегабайты данных на стороне клиента, постоянно и защищённо, с правами пользователя. Dojo Storage реализован для подавляющего большинства широко используемых веб-браузеров, включая Internet Explorer, Mozilla Firefox и Safari. Будучи включённой в веб-страницу, Dojo Storage определяет наиболее приемлемый метод хранения информации. Для Firefox 2 используется «родной» интерфейс, в других браузерах используется скрытый Flash-апплет. Так как Flash 6+ установлен приблизительно на 95 % компьютеров по всему миру,[2] этот механизм хранения информации доступен большинству. Для тех веб-приложений, которые загружаются из файловой системы (то есть URL=file://…), Dojo Storage будет прозрачно использовать XPCOM в Firefox или ActiveX в Internet Explorer. Программист, использующий dojo, не обязан задумываться о тонкостях реализации — он просто получает в свои руки абстрагированные методы put() и get().

Критика

Загрузка

Ранние версии Dojo имели репутации громоздких и медленно загружающихся.[3] Кроме того, требовалась дополнительная работа для обеспечения кросс-доменной загрузки Dojo, например, через сети доставки контента. Решение этих проблем было основной целью при разработке Dojo 1.7, которая привнесла асинхронную загрузку модулей (AMD) и «нано»-загрузчик.[4]

Документация

Dojo долгое время критиковали за неполную, неточную и устаревшую документацию. С целью устранения этих проблем разработчики внесли множество исправлений в документацию для версии 1.8, включаю новые руководства, браузер API, новые главы и обновление большинства примеров кода для приведения их к стилю асинхронной загрузки модулей.[5][6]

Про Dojo написано несколько книг, но практически во всех них рассматривается версия Dojo 1.3 или более ранние, многие книги морально устарели. Не рассматривается поддержка AMD и соответствующая реорганизация приложения, примеры кода в этих книгах слабо применимы к современным версиям фреймворка, а описанные практики не являются хорошими. Многие авторы ждут релиза Dojo 2.0 перед публикацией чего-либо нового. [7]

Кривая обучения

Многие утверждают, что Dojo значительно сложнее для изучения и начала работы в сравнении с более популярной библиотекой jQuery.[8][9]

Соавтор Dojo Дилан Шайнманн объясняет это как расхождение во взглядах:

Конечно, гораздо проще изучить что-то маленькое, чем что-то, что делает больше, но наши требовательные пользователи быстро приходят к тому, что более полное изучение сейчас сохраняет множество часов в будущем для вещей, которые Dojo позволяет делать проще.

Оригинальный текст (англ.)
It’s certainly easier to learn something that’s smaller than something that does more, but our avid users are quick to point out that a bit more learning up front saves them countless hours for things that Dojo makes easy.

Стабильность API

Пользователи ранних версий столкнулись со сложностью перехода к версии 1.0 после того, как тулкит был полностью переписан. Переход к AMD в последних версиях создал похожую проблему. Разработчики Dojo прикладывают большие усилия для обеспечения обратной совместимости несмотря на довольно быструю эволюцию фреймворка, в котором большие части текущего API хоть и объявлены устаревшими, но до сих пор поддерживаются. Несмотря на это довольно часто при обновлении пользователи обнаруживают, что всё прошло не так гладко, как они ожидали.

В грядущем релизе 2.0, как ожидается, будут удалены части устаревшего API, но будет по большей части оставлена совместимость с версией 1.8.

Dojo Foundation и спонсорство

IBM[10] и Sun Microsystems[11] анонсировали официальную поддержку Dojo, включая вклад в разработку ядра библиотеки. Dojo Foundation — некоммерческая организация, созданная для поддержки и продвижения Dojo. Её членами и спонсорами являются:

См. также

Примечания

  1. Release 8.0.0 — 2022.
  2. Adobe Flash Player Version Penetration =  (неопр.). Архивировано 19 февраля 2012 года.
  3. An Interview with Dojo Toolkit Creator Dylan Schiemann  (неопр.). Nettuts+ (16 августа 2012). Дата обращения: 21 ноября 2012. Архивировано 27 ноября 2012 года.
  4. Dojo 1.7 Released!  (неопр.) Dojo Toolkit Blog (1 января 2011). Дата обращения: 21 ноября 2012. Архивировано 3 ноября 2012 года.
  5. What’s coming in Dojo 1.8  (неопр.). Dojo Toolkit Blog (9 февраля 2012). Дата обращения: 21 ноября 2012. Архивировано 15 ноября 2012 года.
  6. what is the raison detre for dojo 2.0  (неопр.). dojo-contributors (11 октября 2012). Дата обращения: 29 ноября 2012.
  7. Schiemann, Dylan jQuery and the long term viability of Dojo  (неопр.). Dojo-interest (30 апреля 2012). Дата обращения: 29 ноября 2012. Архивировано 29 октября 2014 года.
  8. Criticism of Dojo?  (неопр.) Seven Foot Tall Cactus (17 августа 2012). Дата обращения: 21 ноября 2012. Архивировано из оригинала 23 ноября 2012 года.
  9. Dojo or JQuery  (неопр.). NotADojoGuru (6 апреля 2012). Дата обращения: 21 ноября 2012. Архивировано 17 декабря 2013 года.
  10. "Press release on www.marketwire.com"  (неопр.). Архивировано 15 июня 2006 года.
  11. "Press release on prnewswire.com"  (неопр.). Архивировано 19 февраля 2012 года.

Ссылки

  • dojotoolkit.org, официальный сайт Dojo, демо.
  • Dojo API
  • Dojo Foundation
  • Русскоязычная Google-группа по Dojo
  • Обзор AJAX-библиотек, 31 июля 2006
Перейти к шаблону «JavaScript»
Идеи
Компиляторы
Движки
Библиотеки
и фреймворки
Редакторы
Инструменты
Связанные
технологии
Люди
Категория Категория
Перейти к шаблону «Инструментарии виджетов»
Инструментарии (наборы) элементов графического интерфейса
Низко-
уровневые
Высоко-
уровневые
Amiga OS
Mac OS и
macOS
  • Cocoa
  • MacApp
  • MacZoop
  • PowerPlant
Windows
UNIX, под X
Кросс-
платфор-
менные
На основе Flash
На основе XML,
AJAX или SVG
На основе Java
На основе
C или C++
На основе Common Lisp
На основе Pascal
На основе Python
На основе Objective C