umade.ru

Недостатки АJAX. Не повторяйте ошибок

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:

Всего оставлено 9 комментариев

  1. agat 5 июля 2005

    Что-то до ужаса это мне флеш напоминает, аналогия полная.

    Эта технология взяла в себя все его недостатки.

  2. Никита 6 июля 2005

    Недостатки безусловно есть. Только еще есть преимущества. Теперь есть выбор между AJAX и Flash для реализации той или иной задачи. А выбор это хорошо.

    Жаль, что об XMLHttpRequest стали вспоминать с опозданием.

  3. benadin 20 июля 2005

    Необходимо также помнить, что JavaScripting имеет особенности написания под разные типы браузеров и даже их версий. Это не Macromedia Flash плагин, который работает везде одинаково. Таким образом грамотная разработка AJAX приложений усложняется по сравнению с классической схемой.

  4. firez 20 октября 2005

    Ой, блин тоже мне “технология”!.. 😀

    Имо, слишком уж узконаправлена она и с юзабилити никак не ассоциируется

  5. Dima Kirei 12 декабря 2005

    Классная передовая технология, за ней будущее.

  6. woofer 17 февраля 2006

    По крайней мере пользоваться этой технологией во Фликере полное наслаждение!!!

  7. x86_Demon 11 марта 2006

    AJAX просто незаменим в тех местах, где необходимо налету проверить какие-то данные.
    К примеру – уникальность логина пользователя.

  8. Geek 2 сентября 2007

    Да, у аякса есть недостатки и они частично повторяют недостатки JavaScript. Здесь главное не переусердствовать и не забывать о юзабилити пользователей. И тогда при умелом использовании это неплохой инструмент.

  9. iMan 2 марта 2008

    Спасибо за перечень, хоть все и на поверхности, но лишний чеклист не помешает

Поиск по сайту

Следующая запись

Предыдущая запись

Из последнего

Архив статей и записей