Главная > AJAX, Open Source, web2.0, веб-обзоры, Разное > Dojo Toolkit 1.1 вышел! Новые возможности, что-то из старого, а в целом — небольшая революция.

Dojo Toolkit 1.1 вышел! Новые возможности, что-то из старого, а в целом — небольшая революция.

29 марта 2008

dojo_logo_final.jpgПриветствую всех читателей. И так, свершилось то, чего многие (или хоть кто-то уж точно) ждали и предвкушали. Да, вышел наконец релизный вариант самой мощной и реально "веб два-нольной" библиотеки для разработки AJAX веб-приложений Dojo Toolkit. Именно для разработки приложений, так как я себе с трудом представляю обычный сайт, который использовал бы хоть десять процентов всех возможностей, ну разве что ограничиваясь только пакетом dojo, а ведь есть еще и dojox и dijit, хотя, по моему мнению, которое сформировалось еще в период активного освоения версии 0.4.3 (да, такая древность и ископаемое, но в некоторых моментах она и сейчас лучше или проще даже последней версии), с визуальной частью у Dojo не очень сложилось. Все же ExtJS на несколько порядков выше и пока нет альтернатив, которые бы свергли ее с трона.

Но вернемся к нашим делам. Пройдя достаточно долгий эволюционный путь развития и смены нескольких архитектур, Dojo наконец начала стабильный этап развития, на котором уже можно ее не только рассматривать в качестве технологической платформы для своего проекта, но и полноценно реально использовать. Версия 1.1 привносит достаточно много изменений и улучшений, и именно этот релиз я бы рекомендовал рассматривать для себя в качестве инструмента. Что же там появилось новое и интересное для рядового разработчика? Сейчас рассмотрим.

Пакет dojo. Множество общих улучшений, обновление API и документации, изменения и баг-фиксы в CSS/шаблонах, улучшения и изменения кода для удаления остатков и зависимостей от предыдущих версий (архитектура и API несколько раз изменялся, но некоторые модули жили еще со времен предыдущих версий почти без изменений, в том числе и не поддерживая новую структуру API). Улучшилась работа с шаблонами и языковыми ресурсами для создания многоязычных приложений. Обратите внимание, что изменились многие CSS-стили, поэтому, если вы использовали dijit для построения пользовательского интерфейса, вам придется проверить код на изменения.

Появилась интересная возможность одновременно (как я понял) работать с несколькими версиями Dojo на одной странице, вплоть до комбинаций уж очень  ранних релизов ветки 0.4.х и последней 1.1. Конечно, это сильно специфическая функциональность и там много особенностей и подводных камней, но она также косвенно свидетельствует о гибкости и независимости архитектуры и концепций, положенных в основу проекта. Детальнее про эту возможность можно прочитать в разделе Dojo book.

Немного изменился и сам процесс загрузки библиотеки - теперь можно через конфигурацию указать, что Dojo должен грузится после загрузки основной страницы, а не в самом начале. Раньше приходилось для сложных приложений выставлять различные индикаторы загрузок и маски, но лучше уж раз подождать и загрузить, ведь в основном  веб-приложение грузится за весь сеанс работы лишь однажды. Но вот что-то, а ресурсоемкость загрузки Dojo была часто уж очень... серьезной, по крайней мере я это наблюдал постоянно почти год, разрабатывая крупный онлайновый проект, где использовалась связка из Dojo и ExtJS. Теперь можно это оптимизировать, так что если вы подойдете к проектированию ответственно и сведете количество используемых модулей к необходимому минимум, то быстродействие значительно возрастет или, по крайней мере, не будет так заметен процесс загрузки отдельных компонент.

Существенно обновился встроенный компонент для передачи данных на сервер, dojo.xhr, который выступает как абстракция нативного XMLHttpRequest, расширяя его возможности. Теперь есть как реализация других, кроме GET/POST методов, например, PUT/DELETE, но и появилась возможность расширять модуль, реализуя необходимые запросы самостоятельно. Мне кажется, самым востребованным и интересным будет запрос HEAD для проверки обновления указанной страницы. Именно этот модуль был всегда в Dojo самым мощным и функциональным, теперь же он  еще более расширился (правда, помню, в первых версиях было больше альтернативных транспортов, теперь есть только нативный обьект, iframe и script-tag). Как ни странно, но только сейчас он наконец корректно вставляет заголовок X-Requested-With в запросы, посылаемые через объект XMLHttpRequest - почему этого не было раньше и кто, где и когда забыл это сделать, неизвестно (в параллельно одному из обсуждений OpenSource на habrahabr.ru - и где было сообщество, ведь всеравно пришлось ждать релиза, извините за оффтоп).

Улучшена работа с браузерным кешем, теперь он может быть задействован и при работе со встроенными шаблонами (или наоборот, отключен).

Позитивно изменился силь работы с атрибутами DOM-узлов, а также упростилась работа с CSS стилями через встроенный класс dojo.style, за что разработчикам большое спасибо. Также был доработан модуль dojo.query, через который можно было простым способом запрашивать отдельные узлы и целые ветки DOM-дерева.

Модуль анимации, уникальный функционал для большинства веб-библиотек, подвергся значительным переделкам, там просто огромное количество изменений и улучшений, часть алгоритмов и техник анимации говорят, была перенесена из Flash, наверное, чтобы упростить разработку различных эффектов и динамических приложений. Обещают повышение производительности и отрисовки (так как минимальная длительность уменьшилась с 1 секунды до 350 мс, вернее, я бы говорил скорее о минимальном "тике" перерисовки). Сюда же относятся и изменения в других модулях, ответственных за различные эффекты и графику - например, dojo.fx.

Ну и наконец, следя за новыми течениями в веб-индустрии, Dojo получил поддержку всех возможностей платформы Adobe AIR, что открывает просто фантастические возможности перед разработчиками веб-приложений, особенно в свете уже присутствующих в Dojo возможностей (большая часть из которых в пакете эксперементальных и новаторских модулей Dojox).

Пакет Dijit. Этот пакет содержит визуальные элементы и виджеты для создания интерфейса пользователя и различных форм. В данном релизе в пакет были внесены в основном косметические изменения, добавлены новые темы оформления и несколько виджетов - SimpleTextArea, не расширяемое простое текстовое поле и multi-select виджет для селектов с поддержкой выбора  нескольких элементов сразу. Появился новый типа лайаута - BorderContainer, который пришел на смену устаревшим вариантам SplitContainer/LayoutContainer, а также модуль для работы с деревьями (Tree), который часто критиковали за нестабильную и просто различную работу в разных браузерах, в частности, за странную работу с DnD - теперь этого вроде не должно быть.

Пакет Dojox. Именно здесь собраны основные новаторские модули и функционал, который ранее вряд ли мог быть вообще реализован (вернее, реализован то мог, но иногда даже не представлялся как и это просто было достаточно сложно и нетривиальное само по себе). Среди изменений следует выделить изменения модуля DTL - теперь в шаблонах можно декларировать виджеты и другие элементы, используя управляющие структуры for/if. Обновился и модуль расширенной анимации и эффектов dojox.gfx, который используется в примере Web drawing tool (такой себе векторный "рисователь" на AJAX/VML/SVG прямо в браузере, да еще и с возможностью многопользовательской работы). Обновлен и модуль рисования различных графиков и диаграмм dojox.chart, который достаточно функционален, чтобы во многих случаях заменить или серверную реализацию или даже веб-сервисы о Google.

Модули криптографии и кодирования (base64, light base64, ascii85 алгоритмы) теперь объединены в один, а в следующей версии отдельный модуль crypto будет удален. Кстати, появился и модуль архивирования информации, поддерживающий пока два алгоритма,  LZW и Splay.

На радость многим появился встроенный модуль highlight для подсветки синтаксиса внутри блока <code> на различных языках программирования. Теперь вполне можно создавать какие-то проекты, ориентированные на разработчиков или специализированные CMS, в которых при создании статей с кодом они будут красиво выделяться. Да и много еще вариантов применения найдется, раньше для этого приходилось применять решения сторонних разработчиков, зачастую только серверные, теперь это встроенный функционал.

Обновлен и модуль store, позволяющий абстрагироваться и унифицироваться от различных методов хранения и представления данных, включая удаленные сервисы вроде Flickr и Picasa. Кроме этого можно работать с данными в форматах Atom, OPML, XML, HtmpTable и много других.

Лично я выделяю самый ожидаемый и нужный модуль - storages, который наконец был полностью переписан для версии 1.1, и поддерживает прозрачную работу с любыми имеющимися способами хранения информации на клиенте - и подключаемый Flash-обьект, и AdobeAIR Storages (аж три вида, включая файловый и защищенный), и Google Gears и HTML 5 Storages. Это самый мощный и нужный функционал, которого многие разработчики очень ожидали, и которому реальных конкурентов так и нет среди всех остальных библиотек.

В пакете Dojox еще очень много уникальных модулей, о которых можно, да и нужно, написать еще много статей. На конец статьи я выделю только один модуль, который, насколько я помню предыдущие релизы, появился только сейчас, но про него нету упоминания в официальном пресс-релизе. Это модуль аналитики (dojox.analytics) который позволяет гибко настроить "слежение" за всеми действиями на странице, например, отслеживая перемещения или другие действия пользователя. Информация обо всех действиях (и даже бездействию) отправляется на сервер и может использоваться для анализа поведения пользователя, детектирования его работы или бездействия с приложением, создания  тестовых систем юзабилити и других решений, которым нужно реально и точно знать, что и как делает пользователь на веб-странице.

Вот и все, надеюсь что у вас хоть бы начал проявляться интерес к этой мощнейшей и в чем то даже красивой библиотеке. Если да, идемте на сайт http://dojotoolkit.org и знакомимся с возможностями, примерами и документацией, загружаем дистрибутив и вперёд...

  1. 29 марта 2008 в 21:42 | #1

    Ушел с dojo, т.к. ну не поддерживает dijit оперу. Сейчас глянул, ComboBox, FilteringSelect так и не работают.

  2. 29 марта 2008 в 23:06 | #2

    а кому эта опера сейчас нужна… одни гики остались. только в сфере мобильного сильные позиции.
    визуальные компоненты, я уже устал повторять, в дожо так себе, а все остальное ИДЕАЛ!

  3. 30 марта 2008 в 00:39 | #3

    круто! будем ковырять storages 😀

  4. 30 марта 2008 в 14:04 | #4

    Согласно статистике LiveInternet, в марте 2008 у нас аж 14.2% гиков с 9й оперой, больше, чем юзеров firefox
    http://www.liveinternet.ru/stat/ru/browsers.html?period=month

  5. 30 марта 2008 в 14:45 | #5

    а вы посмотрите на мировой рейтинг.. как и фаллоут, в рунете часто «другой путь» и здесь провальные или просто средние по успешности продукты часто обретают статус культа.

  6. kmike
    30 марта 2008 в 16:10 | #6

    Да, в мире огнелис сильно впереди) Но предполагаемая аудитория моих проектов все ж российская. И доля оперы не снижается, а растет, согласно тому же LiveInternet.
    Против Dojo ничего не имею, отличная штука) Правда если их идеологии следовать с нестандартными атрибутами, html перестает валидацию проходить, зато удобно.
    За обзоры спасибо, все читаю, интересно.
    Сам теперь на mootools. Т.к. сайт понравился)

  7. 10 апреля 2008 в 11:30 | #7

    расковырял storages — 3 часа работы и на выходе я имею 2 скрипта основной dojo.js и сборник из всех необходимых в одном для работы с Flash Storage — итого получилось ~ 150кб, не так уж много, учитывая что мы можем сэкономить мегабайты и конекты к серверу. Причем это только первый результат, уверен что если еще поковырять полученные 2 скрипта, то можно как минимум килобайт 50 выкинуть…

  8. 10 апреля 2008 в 12:45 | #8

    Руслан, это супер — давай процесс ковыряния и все сопутствующие снова в виде совместной статьи оформим?

  9. 10 апреля 2008 в 14:03 | #9

    вполне реально, вот еще бы все запомнить что я тут испробовал :),
    еще выкинул немного, осталось ~120k, как будет более менее меня удовлетворяющий результат — обязон напишем про это 😎

  10. 10 апреля 2008 в 14:07 | #10

    я в таких случаях, когда приступаю к рассмотрению интересной темы, сразу пишу паралельно статью или заметки 🙂
    давай, ждемся!!

  11. 10 апреля 2008 в 16:27 | #11

    ура!, я закончил :), выделил все необходимое в один файл, и протестил его на стандартных тестах которые идут в пакете Дожо, все пашет…

    итого мы имеем — отдельный Flash Storage ~ 99кб кода (правда уже с обфусфакцией), его можно еще чуток уменьшить, но это возможно только при внутренней хирургии отдельных классов, а это может повлечь к негативным последствиям, которые могут себя сразу не проявить… таким образом 99кб и целостность кода сохранена
    теперь буду думать как это прикрутить к fullajax, уверен будет очень интересный синтез

  12. 10 апреля 2008 в 20:50 | #12

    и все же я не удовлетворен до конца, уверен если написать свое ЖС АПИ под это же флеш хранилище — размер будет порядка 10-20кб, уж много лишнего всего в Дожо, такова цена универсальности… буду писать свое АПИ

  13. 11 апреля 2008 в 16:12 | #13

    минимизировал до ~ 20 кб 😀

  14. 11 апреля 2008 в 16:57 | #14

    крута 🙂

  15. 15 апреля 2008 в 23:57 | #15

    Закончил реализацию адаптера для storage под fullajax. По предварительным тестам, работает ВЕЛИКОЛЕПНО! Протестил на ИЕ6, ИЕ7, ФФ2, Опера9, Сафари3. В ближайшее время переделаю свой сайт с использованием Flash Storage. Скорость работы сайта должна быть на порядок выше. Это реально переход на новый уровень.

  16. 16 апреля 2008 в 09:10 | #16

    А у кого-нибудь получилось русифицировать календарь?

  17. 16 апреля 2008 в 10:56 | #17

    ExH — не знаю, честно. не использовал очень давно компоненты визуальные из пакета.

    Руслан — статью в студию! а оно сможет работать как самостоятельная библиотека, вне контекста твоей системы?

    Хм.. видимо пора делать какой-то репозитарий проектов у нас 🙂

  18. 16 апреля 2008 в 17:16 | #18

    на статью нет времени вообще 🙁 , и так все отложил в сторону, чтобы сделать сторадж, загрузка 200%, поэтому статья мало вероятна… может я тезисы накидаю, а ты уж тогда разукрасишь все 😉

    «ОНО» сможет работать как самостоятельная библиотека — общий самостоятельный вес ~16кб

    в ближайшее время пока не буду выкладывать самостоятельный кусок, уж очень хороша «весчь», сначала надо подумать как ее применить на свою пользу :smile:, ну а потом уж в массы

  19. 16 апреля 2008 в 17:28 | #19

    вполне 🙂 тезисы исходники и я разрулю это все в большущий материал 🙂 и на хабр будет и сюда. и в подкасте освещу (раскрываю тайну века)

  20. And
    20 ноября 2008 в 15:58 | #20

    привет! подписывайтесь на группу по DOJO
    groups.google.com.ua/group/ru-dojo-js-framework

  21. 20 ноября 2008 в 16:58 | #21

    And, спасибо, уже подписался 🙂 я и в группе ZendFrameworka тоже состою и видел анонс. Отлично что появилась группа!

Комментирование отключено.