Pull to refresh

Обзор нового релиза самой мощной Ajax библиотеки — Dojo Toolkit 1.2

Reading time7 min
Views2.7K
Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.

Наверное я опущу детальное описание общей архитектуры фреймворка, это уже рассказывалось неоднократно в других наших публикациях, а в этой версии ничего глобального не поменялось, так что если вы основывали своё приложение на 1.1 ветке, думаю, переход пройдет с минимальными изменениями кода. А вот что же нового и интересного появилось — мы сейчас рассмотрим.

Dojo core.

Обновлён модуль работы с событиями клавиатуры, теперь мы можем перехватывать нажатия любых клавиш, даже специальных и обрабатывать их в своём приложении, также исправлены некоторые баги. Модуль детектирования платформы потерпел изменения — теперь нужно проверять отдельные свойства (dojo.isIE, dojo.isFF, dojo.isSafari) для определения платформы, аналогично сделано в другом фреймворке, нашем любимом ExtJS. Кроме этих основных платформ, Dojo поддерживает работу (и автоматически определяет и использует специфический код) и в среде Rhino, Jaxer, Spaydermonkey ну и, конечно, все браузерные платформы, среду Adobe Air и, отдельно выделена поддержка Google Gears. Отмечу, что некоторые компоненты или возможности доступны только на определённых платформах, поэтому Dojo сначала детектирует глобально, запущен он в среде браузера или другим способом.

Обновлена поддержка многоязычности и локалей, оказалось, что за модулем cldr скрывается данные от сервиса Common Locale Data Repository (http://unicode.org/cldr), который предоставляет различные языковые данные в кодировке Unicode для множества языков. Теперь Dojo использует версию 1.6, которая для работы с составе фреймворка была сильно трансформирована в нужный внутренний формат (подробнее в Readme в директории компонента). На основе Dojo многие компании делают серьёзные проекты, рассчитанные на мировой рынок, и там локализация будет как нельзя кстати.

Значительно изменён модуль, отвечающий за конфигурацию при загрузке (djConfig.addOnLoad) и позволяющий выполнять пользовательский код после инициализации фреймворка, теперь даже если Dojo подгружается после загрузки страницы и позволяет исполнять как указанный код, функции, так и методы объектов — по сути, любой возможный вариант теперь может быть использован.

Изменения коснулись и режима отладки, теперь перехват ошибок (try/catch) работает корректно во всех модулях и калл-бек функциях, прерывая исполнение кода для отладки при возникновении ошибки, а если режим отладки отключён, то ошибка направляется в лог.

Dijit

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

Dojox

В этом компоненте самое большое количество изменений и интересных новинок. Много изменений в компоненте построения графиков и диаграмм dojox.Charting, добавлены тултипы-подсказки, новые типы диаграмм, поддержка анимации, событий — все для того, чтобы это стало полноценным компонентом среди виджетов, позволяя контролировать все детали и части графиков.

Приятно удивил и компонент для работы с цветом dojox.Color, который теперь может преобразовывать цвета используя различные цветовые модели — RGB, CMYK/CMY и HSL/HSV.

dojox.gfx дает нам самые широкие возможности в плане работы с графикой, теперь имеет возможность работы с векторной графикой формата SVG и, в частности, загружать и использовать шрифты этого формата. Также значительно переписан рендер, использующий возможности плагина MS Silverlight и не требует теперь сторонних библиотек.

Значительно обновлён компонент для работы с HTML, dojox.html, который теперь делать почти все что угодно с HTML и CSS программным образом, а его возможности используют другие компоненты, тот же gfx.

В пакете Dojox не только различные невизуальные компоненты, но и виджеты, пока не вошедшие в стандартный пакет Dijit, но которые могут пригодится при создании сложных интерфейсов. Здесь есть и визуальный WYSIWYG-редактор с возможностью создания и редактирования таблиц и работой с загружаемыми изображениями, и компонент таблицы (dojox.Grid), который значительно похорошел с предыдущих версий, обзавелся тесной интеграцией с компонентами для работы с данными (dojo.data) и множество улучшений. Так как это самый часто используемый компонент из сложных ajax-виджетов (не считая редакторов), то изменения будут полезны для всех, кто использует таблицы в своих приложениях. Тем более, указывается, что сохранена обратная совместимость с предыдущими версиями.

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

Из других важных изменений я бы отметил только компонент dojox.xml.widgetParser, который разбирает XML-описание виджетов, а значит можно, по идее, формировать описание интерфейса на стороне сервера в виде XML-файла и передавать клиенту для рендеринга. Теперь поддерживается и включение тега <script> для подключения или внешних файлов или включения исполняемого кода прямо в описание видежтов. Остальное — небольшие изменения и правки, расширен компонент для анимации dojox.fx, появился неплохой компонент dojox.widget.Wizard и другие изменения.

Много изменений в компонентах доступа к данным. Появился мощный компонент dojox.data.JsonRestStore для реализации работы с сервисами через REST/JSON с поддержкой HTTP методов GET/POST/PUT/DELETE. dojox.data.CouchDBRestStore — компонент для работы с базой данных CouchDB, достаточно интересный проект, о котором мы скоро расскажем. Одни из компонентов отвечает за работу с GoogleFeedStore, позволяя использовать и обрабатывать различные форматы фидов от сервисов Google. При этом работа с поиском вынесена в отдельный набор компонент под названием GoogleSearchStore, в котором есть компоненты для обычного поиска, поиска по видео, изображениям и другие виды поиска, включая малоизвестные, например, Book search. dojox.data.S3Store позволяет работать с сервисом S3 от компании Amazon. Вы можете работать и с универсальным интерфейсом dojox.data.ServiceStore с любым сервисом, или же наследовать его и описать компонент для собственной реализации.

Существенно расширены и модули обработки данных в формате JSON — это уже более похоже на работу с данными аналогично базам данных. Компонент dojox.json содержит модуль для реализации различного типа запросов к данным JSONQuery, средства для описания структуры данных и валидации dojox.json.schema. Кстати, и работа с сервисами может происходить в офф-лайн режиме, для этого есть специальные модули dojox.rpc.OfflineRest/dojox.rpc.LocalStorageRest

А теперь рассмотрим новшества и расширения, которые появились в 1.2 ветке Dojox, часть из которых просто уникальная на рынке AJAX-компонент.

Зачастую, статистика в её обычном виде, недоступна для веб-приложений, так как все популярные счётчики работают с обычными веб-сайтами, а вот использование их в составе сложных веб-приложений очень затруднительно. Теперь вы, строя приложение на основе Dojo, можете использовать компонент dojox.analytics.Urchin, предоставляющий все возможности счётчика от Google Analytics, позволяя его встраивать во все компоненты приложения, отложенную загрузки и инициализацию и другие возможности. Вплоть до того, что вы можете вставить счётчик в каком-либо диалоговом окне и отследить, как часто и кто использует тот или иной функционал в этом окне.

dojox.av позволяет использовать стандартный компонент для работы с аудио и видео данными, предоставляет виджет-плеер (dojox.av.widget.Player) для проигрывания роликов.

Если вы используете Flash, то наверняка вам надо компонент для удобной вставки мультимедийных компонент, инициализации плеера, определения версии установленного Flash-компонента, а также, в случае отсутствия, корректная обработка этой ситуации. Для этого есть встроенный компонент dojox.embed, работающий как с Flash, так и QuickTime-плагинами. Теперь можно отказаться от использования сторонних решений, вроде Adobe Flash Detection Kit или SWFObject 2.

Расширены возможности коммуникации, модуля io, теперь можно использовать модель плагинов для работы с другими, не стандартными сейчас возможностями, вроде новых свойств в IE 8, а также реализована передача кроссдоменных данных через механизм window.name.

Если вы хотите использовать более продвинутые модели для разработки, попробуйте обновлённый модуль реализующий аспектно-ориентированное программирование (dojox.lang.aspect), детальнее в этом посте.

Модуль безопасности dojox.secure позволяет добавить к объектам встроенную валидацию, позволяет запретить изменять какие-либо узлы DOM-модели страницы, изменять или переопределять некоторые объекты, а также предоставляет «песочницу» для исполнения кода в строго контролируемой области (dojox.secure.sandbox).

Для тех, кто использует юнит-тестирование для веб-приложений, радость — появился компонент или скорее среда для создания тестов для интерфейсов и виджетов, DOH, что позволит вывести разработку AJAX-приложений на серьёзный уровень. Пакет doh.robot позволяет создавать юнит-тесты для всех компонент (Dojo, Dijit, Dojox), а также предоставляет рекордер (dojox.robot.recorder) для записи и исполнения ваших действий.

Полный ChangeLog изменений доступен здесь.

Да, этот релиз вышел достаточно хороший, добавлены нужные в реальной разработке компоненты и исправлены ошибки. Dojo снова удержал планку самого мощного и функционального фреймворка, однако не следует думать, что его можно применять только в сложных приложениях — если вам необходимо всего несколько компонент, вы и используете только их, библиотека автоматически подгрузит все необходимое и это не скажется особо на длительности загрузки страницы. Релизная версия 1.2 только успела выйти, а Aptana, лучшая из открытых IDE для веб-разработки, уже включила поддержку это ветки в свою среду в виде плагина. Также замечу, что популярный РНР-фреймворк Zend Framework также поставляется теперь с Dojo в качестве расширения функциональности в плане интерфейса, так что если уже такие компании выбрали за основу Dojo, возможно и вам стоит посмотреть на его возможности.
Tags:
Hubs:
+12
Comments36

Articles

Change theme settings