AJAX
AJAX (ˈeɪdʒæks, от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных, веб-страница не перезагружается полностью и веб-приложения становятся более быстрыми и удобными.
По-английски AJAX произносится как эй-джэкс, по-русски довольно распространено ая́кс.
Содержание |
[править] Технология
AJAX — не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах:
- использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, например:
-
- с использованием XMLHttpRequest (основной объект);
- через динамическое создание дочерних фреймов[1];
- через динамическое создание тега <script>[2].
- использование DHTML для динамического изменения содержания страницы;
В качестве формата передачи данных обычно используются JSON или XML.
[править] История
Впервые термин AJAX был публично использован 18 февраля 2005 года в статье Джесси Джеймса Гарретта (Jesse James Garrett) «Новый подход к веб-приложениям»[3]. Гарретт придумал термин, когда ему пришлось как-то назвать новый набор технологий, предлагаемый им клиенту.
Однако в той или иной форме многие технологии были доступны и использовались гораздо раньше, например в подходе «Remote Scripting», предложенным компанией Microsoft в 1998 году, или с использованием HTML элемента IFRAME, появившегося в Internet Explorer 3 в 1996 году.
AJAX стал особенно популярен после использования его компанией Google в сервисах Gmail, Google Maps и Google Suggest.
[править] Преимущества
- Экономия трафика
- Использование AJAX позволяет значительно сократить трафик при работе с веб-приложением благодаря тому, что часто вместо загрузки всей страницы достаточно загрузить только изменившуюся часть, как правило довольно небольшую.
- Уменьшение нагрузки на сервер
- AJAX позволяет несколько снизить нагрузку на сервер. К примеру, на странице работы с почтой, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту.
- Ускорение реакции интерфейса
- Поскольку нужно загрузить только изменившуюся часть, пользователь видит результат своих действий быстрее.
[править] Недостатки
- Отсутствие интеграции со стандартными инструментами браузера
- Динамически создаваемые страницы не регистрируются браузером в истории посещения страниц, поэтому не работает кнопка «Назад», предоставляющая пользователям возможность вернуться к просмотренным ранее страницам, но существуют скрипты, которые могут решить эту проблему.
- Другой недостаток изменения содержимого страницы при постоянном URL заключается в невозможности сохранения закладки на желаемый материал. Частично решить эти проблемы можно с помощью динамического изменения идентификатора фрагмента (части URL после #), что позволяют многие браузеры.
- Динамически загружаемое содержимое недоступно поисковикам (если не проверять запрос, обычный он или XMLHttpRequest)
- Поисковые машины не могут выполнять JavaScript, поэтому разработчики должны позаботиться об альтернативных способах доступа к содержимому сайта.
- Старые методы учёта статистики сайтов становятся неактуальными
- Многие сервисы статистики ведут учёт просмотров новых страниц сайта. Для сайтов, страницы которых широко используют AJAX, такая статистика теряет актуальность.
- Усложнение проекта
- Перераспределяется логика обработки данных — происходит выделение и частичный перенос на сторону клиента процессов первичного форматирования данных. Это усложняет контроль целостности форматов и типов. Конечный эффект технологии может быть нивелирован необоснованным ростом затрат на кодинг и управление проектом, а также риском снижения доступности сервиса для конечных пользователей.
[править] Альтернативы
В хронологическом порядке:
- Java-апплеты, позднее технология JavaFX
- Стек технологий Flash в виде ActionScript 3, Adobe Flex и Flash Remoting составляет технологическую основу RIA (Rich Internet Applications) активно продвигаемых Macromedia (теперь часть Adobe).
- Технология Silverlight фирмы Microsoft
[править] Библиотеки
- AJAX.OOP — JavaScript фреймворк
- Dojo — многофункциональный JavaScript инструментарий;
- Google Web Toolkit — инструментарий для Java-разработчиков;
- jQuery — JavaScript библиотека;
- MooTools — JavaScript библиотека;
- Extjs — JavaScript библиотека;
- Prototype — JavaScript библиотека, также доступная в Ruby on Rails;
- script.aculo.us — JavaScript библиотека, также доступная в Ruby on Rails;
- ZK Framework — бесплатная библиотека ZK Framework;
- xajax — PHP и JavaScript библиотека.
- JsHttpRequest AJAX-библиотека с поддержкой AJAX-закачки файлов на сервер и многими другими возможностями.
[править] Примечания
[править] См. также
[править] Ссылки
- AJAX: С чего начать — перевод статьи с developer.mozilla.org, в которой доходчиво объясняется, как написать первое AJAX-приложение.
- Ajax в деталях - цикл статей на сайте javascript.ru
- Освоение Ajax — цикл статей на сайте IBM, посвящённый изучению AJAX.
- Перевод статьи «Новый подход к веб-приложениям»
- Модель Ajax
- Основы работы с Ajax
[править] Литература
- Б. Маклафлин Изучаем Ajax = Head Rush Ajax. — СПб.: «Питер», 2007. — С. 448. — ISBN 978-5-91180-322-3
- Стивен Хольцнер Ajax Библия программиста = Ajax Bible. — М.: «Диалектика», 2009. — С. 553. — ISBN 978-5-8459-1502-3
- Дейв Крейн, Бер Бибо, Джордон Сонневельд Ajax на практике = Ajax in Practice. — М.: «Вильямс», 2007. — ISBN 978-5-8459-1327-2
- Дэниел Вулстон Ajax и платформа .NET 2.0 для профессионалов = Pro Ajax and the .NET 2.0 Platform. — М.: «Вильямс», 2007. — С. 464. — ISBN 1-59059-670-6
- Дейв Крейн, Эрик Паскарелло, Даррен Джеймс AJAX в действии: технология - Asynchronous JavaScript and XML = Ajax in Action. — М.: «Вильямс», 2006. — С. 640. — ISBN 1-932394-61-3