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 ∞

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

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

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

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

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

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