Ajax... частично революция, частично эволюция... а некоторые могут сказать, что это всего лишь рекламная шумиха... Обобщающим термином Ajax принято называть следующий набор технологий:
- HTML, XHTML, XML и SVG;
- JavaScript;
- CSS и XSLT;
- и последнее по счету, но не по важности - объекты браузера, включая объект Canvas и объект, что лежит в основе Ajax, - XMLHttpRequest.
Большинство из этих технологий существуют уже около десяти лет, так почему же столь высок интерес к ним сейчас?
Ajax - это больше, чем просто набор технологий, это направление развития веб-страниц и веб-приложений. Направление существовало и в прошлом, но на тот момент у нас не было необходимых инструментов, чтобы создавать подобные приложения. Сегодня спецификации, которые были новыми десять лет назад, достигли зрелости и, что гораздо важнее, имеют широкую поддержку в веб-браузерах. Новые спецификации продолжают появляться, и создатели инструментальных средств сотрудничают лучше, чем несколько лет тому назад.
Раньше, когда веб-разработчики делали первые неуверенные попытки добавить интерактивность веб-страницам, их возможности были ограничены браузерами, т. к. те поддерживали совершенно разные модели, а иногда даже разные языки сценариев. Использование каскадных таблиц стилей (CSS) в качестве универсального средства добавления представления на страницу было затруднено различными интерпретациями, не говоря уже о сугубо специфических расширениях.
Сейчас CSS имеют почти всеобщую поддержку, и хотя все еще существуют некоторые индивидуальные особенности, большинство браузеров поддерживают большинство спецификаций, и мы находимся на стадии, когда то, что мы можем сделать, гораздо больше того, что мы не можем сделать. Что же касается языка сценариев, то благодаря усилиям организации ЕСМА выпущена версия JavaScript, известная как ECMAScript, которая поддерживается всеми основными инструментальными средствами, как во Всемирной паутине, так и за ее пределами.
Разметка стала более совершенной, и мы переходим от HTML с его капризами к XHTML с его дисциплиной. Мы также добавляем новые XML-словари, например Scalable Vector Graphics (SVG)- способ добавления интерактивной графики, не зависящей от плагинов и внешних объектов. SVG и недавно появившийся Canvas обособлены от любой разметки и войдут в выпускаемый стандарт HTML5, промежуточный шаг между старым HTML и более строгим XHTML.
Однако мы не отказались совсем от старых специфических объектов. Но теперь их использование не ограничивается внедрением в один браузер, а становится общепринятым. Один из таких объектов - это XMLHttpRequest, который позволяет делать запрос к веб-сервисам, не уходя со страницы, и обрабатывать результат динамически без перезагрузки страницы.
Но что это дает разработчикам и пользователям? Это дает возможность читая статью щелкнуть по ней, а затем редактировать ее по месту - и все это на одной и той же странице. Мы также можем удалить строки из таблицы, и удаление произойдет немедленно. То же самое и с обновлениями.
Мы также можем добавить информацию к фотографии, не перезагружая ни страницы, ни фотографии. Или раскрыть полноразмерную фотографию, просто щелкнув по изображению-миниатюре.
Значительно изменилось использование нами веб-форм. Мы можем сделать выбор в одном списке, и другой список выбора будет заполнен автоматически. Мы можем отсортировать таблицу с помощью drag-and-drop, свернуть поля, чтобы освободить место, или щелкнуть по вкладке, чтобы заполнить другую часть большой формы или просмотреть другую информацию,- опять же без перезагрузки страницы.
Конечно, то, что мы называем "страницей", изменилось, и в этой точке зрения есть как хорошие, так и плохие стороны. Трудно подсчитать, сколько брать с рекламщиков за "просмотры страницы", когда сотня страниц может быть загружена без обновления экрана. Поисковые службы не понимают динамически сформированных ссылок, также как и экранные дикторы. Что касается случаев, когда сценарии выключены, то для Ajax это бесполезно, с его зависимостью от JavaScript.
Вот где концепция постепенного улучшения (progressive enhancement) выходит на сцену. По замыслу автора Стивена Чампеона (Steven Champeon), данная концепция основывается на том, что Ajax-эффекты добавляются к имеющимся веб-приложениям, а не являются их заменой. Другими словами, вы по- прежнему разрабатываете традиционное веб-приложение, основанное на отправке формы для того, чтобы обновить таблицу, а затем вы его усовершенствуете, добавляя возможность обновлять таблицу изменением отдельных полей формы без необходимости отправлять форму целиком.
Страница с вкладками может превратиться в последовательность вертикальных разделов внутри страницы, если выключены сценарии; данные все еще будут там, только по-другому организованы. Слайд-шоу может упорядочить просматриваемые элементы в том порядке, который задан приложением, написанным на РНР и находящемся на компьютере с системой Unix, или который задан JavaScript-запросом из Firefox, Safari или Internet Explorer.
С применением постепенного улучшения не имеет значения, включены сценарии или нет, т.к. никакая функциональность не теряется, просто она другая. В то же самое время, улучшения веб-приложений, которые может сделать Ajax (а их немало), будут доступны около 80 процентам пользователей - тем, у кого установлен подходящий браузер и включены сценарии.
Вам подходит? Тогда вы уже на полпути.