AJAX (Asynchronous JavaScripting and XML) стремительно притягивает интерес веб-разработчиков к использованию определенного инструментария — набора технологий, с помощью которых (по мнению большинства) закладывается новый этап развития веб-приложений. Этот набор включает в себя (x)HTML, CSS, DOM, JavaScript, XML, XSLT, XMLHttpRequest. В качестве альтернативы XML/XSLT возможно использовать JSON и JSON-RPC.
AJAX позволяет без перезагрузки веб-страницы (на лету) подгружать и преобразовывать необходимую информацию.
Для веб-разработчиков, AJAX представляет некую опасность, которая открывает проблемы, связанные с пользовательским интерфейсом и нагрузкой на сервер. Поэтому я решил воспользоваться списком наиболее часто повторяющихся AJAX-ошибок, который составил Алекс Босворф, и разместить их здесь, на русском.
Отсутствие мгновенного визуального сигнала
Если при щелчке мыши не срабатывает определенное действие AJAX, то необходимо предупредить об этом визуальным сигналом. Например, кнопка загрузки в GMail. Когда я что-нибудь делаю в GMail, маленькая красная кнопка показывает, что страница загружается. Это делается из-за невозможности посредством AJAX’а инициировать обычный пользовательский интерфейс во время загрузки страницы.
Отсутствие возможности использовать кнопку “назад” (back button)
Кнопка возвращения назад является прекрасным дополнением к пользовательскому интерфейсу. К сожалению, кнопка возвращения не очень хорошо дружит с JavaScript, поэтому потеря этой функциональности является одной из главных причин не создавать веб-приложения, которые написаны полностью на JavaScript.
Изменяющиеся ссылкии (запросы GET)
Изменяющиеся ссылки не только создают проблемы для роботов, но и для пользователей, не привыкших к тому, что ссылки могут повлиять на приложение.
Неожиданно меняющиеся и мигающие части страницы
Первая буква A в слове AJAX означает асинхронность. Проблема с асинхронными сообщениями заключается в том, что они могут сбивать с толку при неожиданном появлении. Асинхронные изменения на странице должны появляться в узко определенных местах и должны использоваться правильным образом. Мерцание мешает концентрироваться, и вообще — возвращает в дни HTML-тэга blink.
Невозможность создавать закладки или передавать ссылки друзьям
Прекрасным свойством веб-страниц является то, что я могу передавать ссылки на страницы другим людям. Также я могу создать закладку страницы и возвратиться к ней позже. JavaScript, а следовательно AJAX-приложение, может создать проблемы с закладками. Так как динамически страницы генерирует JavaScript, а не сервер, то адрес страницы вырезается из цикла и уже никак не может быть использован в дальнейшем. Очень печально потерять такое свойство. Много AJAX-приложений с большим вниманием применяют специально сконструированные постоянные ссылки (permalinks) специально для таких случаев.
Объёмный код тормозит работу браузера
AJAX открывает путь к более интересным JavaScript-приложениям, что часто означает больше кода. А больше кода означает больше работы для браузера. Для работы веб-сайтов, интенсивно использующих JavaScript, особенно с непродуманным кодом, необходимо иметь мощный процессор. Раньше проблема с ЦПУ всегда была лимитирующим фактором для JavaScript, но прирост в мощности компьютеров не означает, что проблема отсутствует.
Асинхронное выполнение групповой обработки
Используя AJAX, вы можете внести сразу несколько изменений в поля формы, но это может создать много проблем. Например, если я убираю много пометок (флажок, галка) каждая из которых асинхронно посылается серверу, то я теряю возможность отследить общую картину изменения checkbox’ов, и последующий поток изменений будет раздражать и сбивать с толку.
Прокрутка страницы и потеря своего места
Еще одной проблемой с всплывающим текстом на странице является эффект, который влияет на прокрутку страницы. Я могу с удовольствием читать статью или прокручивать длинный список, и вдруг асинхронный JavaScript-запрос решит вырезать параграф намного выше читаемого мною текста, выбивая меня из процесса чтения. Это определённо раздражает и заставляет тратить время на то, чтобы найти то место, где я находился.
Подробнее об AJAX:
Что-то до ужаса это мне флеш напоминает, аналогия полная.
Эта технология взяла в себя все его недостатки.
Недостатки безусловно есть. Только еще есть преимущества. Теперь есть выбор между AJAX и Flash для реализации той или иной задачи. А выбор это хорошо.
Жаль, что об XMLHttpRequest стали вспоминать с опозданием.
Необходимо также помнить, что JavaScripting имеет особенности написания под разные типы браузеров и даже их версий. Это не Macromedia Flash плагин, который работает везде одинаково. Таким образом грамотная разработка AJAX приложений усложняется по сравнению с классической схемой.
Ой, блин тоже мне “технология”!.. 😀
Имо, слишком уж узконаправлена она и с юзабилити никак не ассоциируется
Классная передовая технология, за ней будущее.
По крайней мере пользоваться этой технологией во Фликере полное наслаждение!!!
AJAX просто незаменим в тех местах, где необходимо налету проверить какие-то данные.
К примеру – уникальность логина пользователя.
Да, у аякса есть недостатки и они частично повторяют недостатки JavaScript. Здесь главное не переусердствовать и не забывать о юзабилити пользователей. И тогда при умелом использовании это неплохой инструмент.
Спасибо за перечень, хоть все и на поверхности, но лишний чеклист не помешает