Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ajax в действии

.pdf
Скачиваний:
95
Добавлен:
01.05.2014
Размер:
6.34 Mб
Скачать

Приложение Б. Инструменты для профессиональной работы с Ajax

623

Замыкания находят свое применение, но мы не будем подробно рассматривать данный вопрос. Если вас заинтересовала эта тема и вы хотите изучить замыкания более подробно, вам следует прочитать статью Джима Лей (Jim Ley), ссылка на которую приведена в конце данного приложения.

Б.4. Выводы

В данном приложении мы рассмотрим ряд интересных особенностей языка JavaScript. При этом мы преследовали две цели. Во-первых, хотели продемонстрировать выразительные средства данного языка. Во-вторых, намеревались рассказать о некоторых решениях, часто принимаемых неопытными программистами и способных привести к возникновению проблем. Специалист, овладевший объектным мышлением, сразу назовет подобные решения неоптимальными и даже опасными.

Мы рассмотрели вопросы поддержки объектов в JavaScript и сходство между классами Object и Array, а также обсудили различные способы создания экземпляров объектов JavaScript: использование JSON, функций конструкторов и прототипов. Кроме того, вы узнали, как обеспечить в JavaScript такие средства объектно-ориентированных языков, как наследование и интерфейсы. Чтобы сделать это, приходится не следовать принципам языка, а скорее противодействовать им.

Говоря о JavaScript-объекте Function, мы показали, что возможно существование функций независимо от объектов, с которыми они связаны. Более того, объекты даже могут заимствовать функции друг у друга. Зная эту особенность, можно лучше понять модель событий JavaScript. И наконец, мы рассмотрели замыкания и показали, как общепринятые программные решения могут привести к непреднамеренному созданию замыкания, что в конечном итоге чревато неоправданным расходом памяти.

По сравнению с Java или С#, язык JavaScript обеспечивает гораздо большую степень гибкости и простор для применения различных стилей программирования. Подобная свобода, предоставляемая программисту, хороша лишь тогда, когда он знает, что должен сделать. Тем не менее при работе группы разработчиков особенности JavaScript могут привести к возникновению проблем. Чтобы избежать их, надо придерживаться соглашений о кодировании.

Если вы хорошо представляете себе работу средств JavaScript, то использование данного языка доставит вам немало приятных минут. Тем, кто до использования Ajax применял объектные языки, эта глава поможет побыстрее включиться в работу и избежать ряда ошибок.

Б.5. Ресурсы

Книг, посвященных самому языку JavaScript, а не программированию в среде Web-браузера, сравнительно немного. Книга Дэвида Фланагана (David Flanagan) JavaScript: The Definitive Guide (O'Reilly, 2001) — безусловно, очень

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-объекты (правда, по мнению автора, это требует определенных усилий).

628 Часть V. Приложения

\jaxAspects

Бесплатное использование с указанием первоисточника ittp://ajaxaspects.blogspot.com

Представляет собой процессор, использующий модули доступа JavaScript для зызова серверных методов Web-служб. Для связи клиента и сервера применяются стандартные средства SOAP и WSDL. В качестве параметров и воззращаемых значений допускается использование простых типов и объектов KML. Кроме того, продукт поддерживает кэширование и очередь действий.

^jaxCaller

Майкл Мехемофф (Michael Mahemoff), 2005 Продукт с открытым исходным кодом ittp://ajaxify.com/run/testAjaxCaller

Интерфейсный объект с многопоточной поддержкой XMLHttpRequest. Предназначен в основном для начинающих пользователей Ajax. В настоящее время продукт находится в стадии разработки; доступна альфа-версия; поставпяется только с демоверсией приложения "живого" поиска AjaxPatterns. Разработан согласно принципам REST.

AJaxFaces

Продукт с открытым исходным кодом (ASF) http://myfaces.apache,org/

Экспериментальная реализация JavaServer Faces с поддержкой Ajax от Apache.

BackBase

Коммерческий продукт с общедоступной версией http://www.backbase.com

Комплексная структура на основе браузера, поддерживающая богатые функциональные возможности браузера, а также интеграцию с .NET- и Javaкодом. BackBase предлагает приложение ША (Rich Internet Application), радикально повышающее практичность и эффективность интерактивных приложений, а также производительность разработчика. Используя BackBase, вы можете создавать Web-приложения с богатым и дружественным пользовательским интерфейсом. BackBase предлагает разделение представления и логики с помощью специального пространства имен XHTML.

Behaviour

Вен Нолан (Ben Nolan), 2005

Продукт с открытым исходным кодом

www.ripcord.со.nz/behaviour/ \

Действие Behaviour основано на использовании селекторов CSS для добавления JavaScript-кода к элементам DOM. Вы создаете хэш селекторов и функ-

Приложение В. Библиотеки 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 непосредственно функциям РНР. В настоящее время выполняется интенсивное тестирование компонентов продукта.