Pull to refresh

Вышел Dojo Toolkit 1.1 Что нового и вкусного?

Reading time 6 min
Views 1.5K

Приветствую всех читателей. И так, свершилось то, чего многие (или хоть кто-то уж точно) ждали и предвкушали. Да, вышел наконец релизный вариант самой мощной и реально «веб два-нольной» библиотеки для разработки 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 и знакомимся с возможностями, примерами и документацией, загружаем дистрибутив и вперёд…

P.S. Кросс-пост из моего личного блога. Оригинал здесь: http://abrdev.com/?p=292
Tags:
Hubs:
+16
Comments 22
Comments Comments 22

Articles