
Ajax в действии
.pdf
624 Часть V. Приложения
серьезная работа. Она несколько устарела, но скоро должно выйти новое издание. Более новая книга Николаса Закаса (Nicholas Zakas) Professional JavaScript for Web Developers (Wrox, 2004) представляет собой хороший обзор возможностей языка, в том числе средств, появившихся недавно. Еще одной хорошей книгой является Полный справочник по JavaScript, 2-е издание. Томас Пауэлл, Фриц Шнайдер.
Полезные материалы можно найти в Web. Дуг Крокфорд (Doug Crockford) обсуждает вопросы применения объектного подхода при программировании на JavaScript, в частности, создание закрытых свойств и методов для классов (http://www.crockford.com/javascript/private.html) и реализацию наследования (http://www.crockford.com/javascript/private.html). На узле Питера-Пола Коха (Peter-Paul Koch) по адресу http://quirksmode. огд также рассматриваются многие особенности языка.
Материал Джима Лея (Jim Ley) о замыканиях в JavaScript можно найти в документе http://jibbering.com/faq/faq_notes/closures.html.
Библиотеках Майка Фостера расположена на сервере h t t p : //www. crossbrowser .com.

626Часть V. Приложения
Впоследнее время библиотеки Ajax и JavaScript прошли большой путь от небольших интерфейсных утилит до полномасштабных клиентских и серверных решений. В данном приложении мы попытаемся охватить весь диапазон предлагаемых продуктов и заранее просим прощения у тех компаний, чью продукцию мы не упомянули.
Авторы данной книги протестировали не все библиотеки и наборы инструментов; во многих случаях описание основано на информации от автора или поставщика. Если вы читаете данный текст через год после его публикации, многие описания будут неточными или устаревшими, а сами продукты — заброшены или включены в другие проекты. По нашему мнению, текущее состояние отрасли очень нестабильно, поэтому мы считаем, что через двенадцать месяцев выживет только несколько наиболее удачных библиотек.
Ну все, хватит отступлений! Ниже приводится обзор библиотек Ajax, которые могут вам встретиться. Они приводятся в алфавитном порядке; кроме того, мы попытались разбить их по категориям. Удачного кодирования!
Accesskey Underlining Library
Продукт с открытым исходным кодом www.gerv.net/software/aul/
Добавляет подчеркивание ключей доступа без использования дескрипторов <и>. Соответствующие дескрипторы подчеркивания в DOM создаются с помощью атрибута accesskey и JavaScript.
Act iveWid gets
Коммерческий продукт; имеется бесплатная версия www.activewidgets.com
Элементы управления богатых клиентов JavaScript; в настоящее время основной продукт предлагает полномасштабную поддержку действий с сеткой.
Ajax JavaServer Faces Framework
Продукт с открытым исходным кодом (Apache) http://smirnov.org,ru/en/ajax-jsf.html
Предназначена для введения в любое существующее приложение JavaServer Faces инфраструктуры Ajax. Большинство существующих компонентов можно использовать без изменений или после простого преобразования в формат с поддержкой Ajax. Предлагает внедрение продукта в проект MyFaces. Отличия от спецификаций JSF минимальны.
Ajax JSP Tag Library
Продукт с открытым исходным кодом http://ajaxtags.sourceforge.net/
Представляет собой набор дескрипторов JSP, упрощающих использование технологии Asynchronous JavaScript and XML (Ajax) на платформе JavaServer Pages. Данная библиотека дескрипторов облегчает разработку за счет того,
Приложение В. Библиотеки Ajax |
627 |
что разработчикам J2EE не приходится писать необходимый JavaScript-код для реализации Web-формы с поддержкой Ajax.
Функция Autocomplete извлекает список значений, согласующихся со строкой, введенной в текстовую форму, по мере ввода этой строки пользователем. Функция Callout отображает выносной или всплывающий блок, привязанный к элементу HTML с помощью события onclick. Функция Select заполняет значениями поле второго списка, основываясь на значении, выбранном из первого списка. Функция Toggle переключает значение скрытого поля формы между true и false, в то же время переключаясь между двумя изображениями. Дескриптор update Field обновляет одно или несколько значений поля формы, основываясь на отклике, порожденном вводом текста в другое поле.
Ajax.NET
Майкл Шварц (Michael Schwarz), 2005
Статус продукта не оговаривается, использование бесплатное http://weblogs.asp.net/mschwarz/
Библиотека, допускающая различные варианты доступа JavaScript-кода к серверному приложению .NET. Может передавать вызовы от JavaScript к методам .NET и возвращаться к обратным вызовам JavaScript. Может обращаться к информации о сеансе из JavaScript-кода. Кэширует результаты. Не требует изменения исходного кода серверной части сценария. Значениям, возвращаемым клиентскому JavaScript-коду, предлагается полная поддержка
классов (в том числе классов DataTable, DataSet, DataView, Arrays и Col- l e c t i o n s ) .
AjaxAC
Продукт с открытым исходным кодом (Apache 2.0) http://ajax.zervaas.com.au
Инкапсулирует целое приложение в один класс РНР, содержащий помимо кода приложения дополнительные библиотеки JavaScript (если они требуются). Вызов файла РНР (HTML-страницы) довольно прост. Вы создаете класс приложения, затем ссылаетесь на JavaScript-код приложения и присоединяете к приложению все необходимые HTML-элементы. Вызывающий HTML-код не засоряется JavaScript-кодом, все события присоединяются динамически. AjaxAC легко интегрировать с процессором шаблонов и вставить в существующие классы РНР или базу данных MySQL для возврата данных от подзапросов. Расширяемая структура элементов управления позволяет легко создавать дополнительные JavaScript-объекты (правда, по мнению автора, это требует определенных усилий).
Приложение В. Библиотеки Ajax 629
ций CSS, принимающих элемент и добавляющих к нему обработчики событий JavaScript (например, onclick). Затем вы регистрируете эти правила на странице и сравниваете их с соответствующими элементами DOM, после чего добавляете в документ код JavaScript. Этот код разработан таким образом, что вы можете рассматривать файлы правил как таблицы стилей (т.е. все, что нужно для их использования, — это включить их на страницу). Библиотека Behaviour предназначена для того, чтобы убрать громоздкую механику атрибутов onclick и узлов сценария со страниц, чтобы они не запутывали ее содержимое. Благодаря своей организации библиотека достаточно удобна и может облегчить повторное использование вашего JavaScript-кода.
Bindows
Коммерческий продукт www.bindows.net
Набор инструментальных средств разработки программного обеспечения (Software Development Kit — SDK), позволяющий генерировать настолько богатые интерактивные Интернет-приложения, что они могут соперничать с современными настольными приложениями, реализованными с интенсивным использованием DHTML, JavaScript, CSS и XML. Приложения Bindows не требуют загрузки и установки на стороне пользователя, необходим только браузер (средства Java, Flash или ActiveX не используются). Bindows предлагает богатый набор элементов управления окнами, а также встроенную поддержку XML, SOAP и XML-RPC.
BlueShoes
Коммерческий продукт; имеется бесплатная версия www.blueshoes.org
Богатый набор компонентов, включающий текстовый редактор WYSIWYG и элемент управления электронными таблицами.
СакеРНР
Продукт с открытым исходным кодом http://cakephp.org/
Полный перенос продукта Ruby on Rails на платформу PHP с прекрасной поддержкой Ajax.
CL-Ajax
Ричард Ньюмен (Richard Newman), 2005 Продукт с открытым исходным кодом http://cliki.net/cl-ajax
Направляет вызовы JavaScript непосредственно серверным функциям Lisp; генерирует суррогат JavaScript; может обращаться к функциям JavaScript или объектам DOM; может интегрироваться в SAJAX.
30 Часть V. Приложения
omfortASP.NET
Тредварителъный выпуск коммерческого продукта; имеется бесплатая версия
ww.daniel-zeiss.de/ComfortASP/
[редставляет подход, позволяющий разработчикам использовать чистое прораммирование ASP.NET для получения возможностей в стиле Ajax. Для еализации этих возможностей ComfortASP.NET использует Ajax (DHTML, avaScript, XML, HTTP), но Web-разработчики пишут только серверный код
.SP.NET.
oolest DHTML Calendar
Тродукт с открытым исходным кодом с коммерческой поддержкой ww.dynarch.com/projects/calendar/
[встраиваемый компонент-календарь JavaScript; может применяться для юрмирования раскрывающихся списков, стиль которых определяется с поющью CSS.
;PAINT
3ross-Platform Asynchronous Interface Toolkit)
Тродукт с открытым исходным кодом (GPL и LGPL) ttp://cpaint.sourceforge.net
"трогая реализация Ajax и JSRS (JavaScript Remote Scripting), поддержива- >щая PHP и ASP/VBScript. CPAINT предлагает код, требуемый для реалиации Ajax и JSRS на сервере, когда возвращаемые данные обрабатываются, Форматируются и отображаются на стороне клиента с помощью. JavaScript. >лагодаря этому можно написать приложение, предлагающее пользователю чень быструю обратную связь.
)ojo
\лекс Рассел (Alex Russell), 2004 Тродукт с открытым исходным кодом ttp://dojotoolkit.org
1редлагает несколько библиотек для использования с Ajax, включая элемен- ы управления окнами, модель событий и передачу сообщений с использова- [ием XMLHttpRequest и другие технологии. Поддерживает JavaScript в Webраузере.
)WR (Direct Web Remoting)
Тродукт с открытым исходным кодом (Apache) rww.getahead.ltd.uk/dwr
)болочка для вызова методов Java непосредственно из JavaScript-кода. Подобно SAJAX, она может передавать вызовы от JavaScript-кода методам Java, i затем возвращаться к обратным вызовам JavaScript Ее можно использо-
Приложение В. Библиотеки Ajax |
631 |
вать с любой Web-структурой (например, Struts или lapestry), поддерживающей философию KISS/POJO в стиле Spring. Данный продукт планировалось включить в следующую версию структуры OpenSymphony Web Works.
Echo 2
Продукт с открытым исходным кодом (MPL или GPL) www.nextapp-com/products/echo2
Echo 2 позволяет кодировать приложения Ajax на Java, автоматически генерировать HTML- и JavaScript-код, а также координировать поток сообщений между браузером и сервером. Предлагает передачу сообщений в формате XML. Если требуется, разработчик может вручную писать JavaScriptкомпоненты.
f(m)
Продукт с открытым исходным кодом http://fm.dept-z.com/
Представляет собой основанную на .NET библиотеку базового класса ЕСMAScript. Предполагается, что данный продукт станет основой нового поколения Web-приложений, основанных на браузере.
FCKEditor
Продукт с открытым исходным кодом www.fckeditor.net
Богатый WYSIWYG-редактор; может загружаться в текстовую область HTML с помощью одной строки JavaScript-кода, что позволяет легко интегрировать его в существующие Web-приложения, системы CMS, энциклопедии и т.п. По своим функциональным возможностям очень похож на TinyMCE.
Flash JavaScript Integration Kit
Продукт с открытым исходным кодом www.osflash.org/doku.php?id=flashjs
Данный продукт разрешает смешивание кода JavaScript и Flash; вызов функций ActionScript из JavaScript-кода и наоборот. Между двумя средами допускается передача данных всех основных типов.
Google AjaxSLT
Продукт с открытым исходным кодом (BSD) http://goog-aj axslt.sourceforge.net
Продукт создан инновационной компанией-производителем приложений поиска Google. Представляет собой JavaScript-оболочку для выполнения XSLTпреобразований и запросов XPath. Разработан в ходе работы над Google Map.
632 Часть V. Приложения
3uise
Коммерческий продукт; имеется бесплатная версия
•mw.javaguise.com
Серверная компонентная модель на основе Java (чем-то похожа на JSF, но троще). В настоящее время для улучшения оперативности в продукт включается поддержка Ajax.
HTMLHttpRequest
Ангус Тернбул (Angus Tumbull), 2005
Продукт с открытым исходным кодом (LGPL) tfww.twinhelix.com/JavaScript/htmlhttprequest/
Простая оболочка для удаленных сценариев. Для улучшения совместимости дспользует XMLHttpRequest и IFrames.
nteractive Website Framework
Продукт с открытым исходным кодом ittp://sourceforge.net/projects/iwf/
Проект, цель которого — поддержка в браузере различных аспектов инфраструктуры Ajax. Описывается авторами как каркас для создания интерактивных Web-сайтов с использованием JavaScript, CSS, XML и HTML. Включает специальный компонент XML-разбора, позволяющий получать в удобном вице читаемый JavaScript-код. Содержит все необходимое для разработки Web- :айтов на основе Ajax и традиционных сценариев. Предлагает многопоточную реализацию XMLHttpRequest и интерфейсную оболочку для DOM, повышающую читаемость кода. ^ .
Jackbe
Коммерческий продукт
*ww.j ackbe.com/solutions/development.html
Набор элементов управления окнами богатого клиента Ajax; может встраиваться в любое промежуточное программное обеспечение, например ASP-, Java-, .NET- или РНР-код.
JPSpan
Продукт с открытым исходным кодом (РНР) uttp://jpspan.sourceforge.net/wiki/doku.php
JPSpan передает вызовы JavaScript непосредственно функциям РНР. В настоящее время выполняется интенсивное тестирование компонентов продукта.