Dojo


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

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

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

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