Ошибки при работе с Ajax · AJAX Planet

Наш читатель Илья Колесников (2tl) перевел и прислал уже достаточно старую, но от того не менее важную и интересную серию . Сейчас мы уже несколько свыклись с такой технологией, как AJAX, но всё же зачастую видно его использование просто ради самого использования, или применения без оглядки на удобство для пользователей. Надеюсь, что статья будет пусть не нова, но полезна для многих разработчиков. Ajax -- это опасная для веб-разработчиков технология, она способна создать множество проблем как с пользовательским интерфейсом, так и с серверной составляющей и нагрузкой на сервер. Я составил сводный список ошибок разработчиков, использующих Ajax. Этот список скопирован из моего блога: Не согласны? Готовы назвать еще одну ошибку? Что ж, эта статья имеет свою страницуPна сайтеP Использование Ajax ради Ajax. Конечно, Ajax это круто, и разработчики любят играть с крутыми технологиями, но Ajax инструмент, а не игрушка. Множество новых Ajax приложений в действительности лишьPмаленькие игрушки, разработанные не для реальных целей, а всего лишь эксперименты в том, что Ajax может делать, или же попытки использовать Ajax где-нибудь, где он не нужен. Игрушки могут быть интересны короткое время, но игрушки -- это не полезные приложения. Поломка кнопки «Назад». Кнопка «Назад» огромная функциональная возможность стандартного пользовательского интерфейса веб-сайта. К сожалению, она плохо работает с JavaScript. Сохранение функциональности кнопки «Назад» главная причина для того, чтобыPне делать веб-приложение только на JavaScript. Отсутствие видимого сигнала о происходящем действии. Если я кликаю по кнопке, вызывающей Ajax-функцию, вы должны дать мне визуальный сигнал, что что-то происходит. Пример этого Pсообщение оPзагрузке на GMail, расположенное справа вверху. Всякий раз, когда я делаю что-нибудь в GMail, маленький красный прямоугольник в верхнем правом углу показывает, что страница загружается. Он замещает стандартную функцию пользовательского интерфейса браузераP-- отображение процесса загрузки новой страницы, т.к. Ajax этого не поддерживает. Оставляя офлайн пользователей позади. Так как границы примененияPвеб-приложений раздвигаются все шире и шире, вскоре все приложения переместятся в веб. Инициализация, подготовка к работеP-- лучше, всемирная модель доступа - это здорово, эксплуатация и конфигурацияP-- классная, изучение пользовательского интерфейсаP-- проще и быстрее. Тем не менее,Pлюди, имеющие нестабильное соединение с Интернетом, или люди, которые не хотят переходить на веб-приложения, должныPиметь те же возможности при работе сPновым поколением Ajax приложений, что и все остальные. То, что технология передовая, не означает, что люди готовы и желают работать с ней. При проектировании веб-приложений, в крайнем случае, надо предполагать оффлайн доступ. У GMail это POP, Backpackit имеет интеграцию с SMS. В Enterprise это веб-сервисы. Не заставляйте меня ждать Ajax. я могу управлять различным задержками на веб-сайтах и обычно я вынужден ждать только загрузки страницы. В случае AJAX-приложенияPи плохого соединенияPс Интернетом я могу получить действительно ужасное время взаимодействия с интерфейсом, потому что каждый раз, когда я что-либо делаю, я должен ждать ответа сервера. Помоги мне Боже, если я должен обратиться к диску сервера, прежде чем продолжить. Такие приложения могут даже . Отправление важной информации в открытом виде. Безопасность AJAX приложений подчиняется тем же принципам, что и безопасность любого веб-приложения, кроме того, не надо забывать о безопасности при передаче данных при асинхронном запросе. Весь трафик должен проверяться, чтобы удостовериться в его достоверности. Разработка AJAX приложений это разработка для одной платформы. Создание Ajax приложенийP-- это кросс-платформенная разработка. Код Ajax выполняется JavaScript-движком IE, Rhino (JavaScript-движок мозиллы), или другим, менее популярным движком, который, тем не менее,Pможет внезапноPстать популярным. То есть, соответствия только со стандартным JavaScript недостаточно, необходимо тестирование для большинства приложений. Большая трудоёмкость создания хорошего Javascript кода вызвана глючностью реализации JavaScript в IE, хотя есть . Слишком много кода замедляет браузер. Ajax представляет возможность сделать JavaScript приложения более интересными.PК сожалению, «интересными» часто означает больше выполняющегося кода. Больше кода больше работы для браузера, а это значит, особенно для некоторых плохо написанных скриптов, что вам нужен более производительный центральный процессор, чтобы функциональность оставалось «живой». Производительность CPU раньше действительно была ограничением функциональности JavaScript, и то, что компьютеры стали быстрее, не означает, что проблема исчезла. Отсутствие альтернатив для тех, у кого нет или отключен JavaScript. , котораяPнеизбежно показывает перекосPв сторону популярных браузеров, у 11 % пользователей JavaScript отключен. Так что, если ваше приложение полностью зависит от JavaScript, вы сразу же теряете десятую часть вашей аудитории. Изобретение нового в пользовательском интерфейсе. Главная ошибка, которую легко сделать, используя Ajax: "щелкни по этой непонятной штуке и получи неочевидный результат". Конечно, пользователи, которые используют приложение некоторое время, могут выучить, что если по этой области кликнуть и удерживать кнопку нажатой, то эту область можно перетащить и оставить на новом месте. Но пока эта возможность не станет общей для большинства пользователей, вы лишь увеличите сложность и время на изучение вашего приложения, а это большой минус для любой программы. Изменение состояний с помощью ссылок (GET запросы). Как я отметил в предыдущей заметке, Ajax приложенияPсоздают множество проблем для пользователей, который полагают, что GET операции не меняют состояние приложения. Зависимость состояния приложения от ссылки --Pпроблема не только для поисковых роботов, но и для пользователей, которые привыкли к навигации по ссылкам они будут озадачены тем, что ссылки используются для смены состояния. Неожиданное мигание и изменениеPэлементов страницы. Первая буква А в Ajax означает асинхронный. Проблема асинхронных сообщений в том, что вполне можноPсбиться с толку, когда они вдруг выскакивают. Изменения на асинхронной странице должны происходить в строго определенном месте, и они должны быть ожидаемы. Вспыхивающие и мигающие сообщения, на которых я не хочу концентрироваться, напоминают о html-теге «blink». Отсутствие ссылок, которые я могу послать друзьям или сохранить в закладки. Другая великолепная возможность веб-сайтов: я могу переслать ссылки другим людям, и они увидят то же, чтоPвижу я. Ещё я могу сохранить адрес в закладках и позже вернуться к нему. JavaScript и Ajax приложения, могут создать множество проблем при такой схеме использования. Как только JavaScript начинает вместо сервераPдинамически генерировать страницу, её адрес больше не может использоваться для навигации. Очень нежелательно терять такую возможность, и многие Ajax приложения имеют специально сконструированные ссылки, чтобы избежать этого. Не применение локальных изменений к другим частям страницы. Так как Ajax/JavaScript дает вамPпотрясающий контроль над содержанием страницы, то легко можно сфокусироваться на одной области страницы и совсем забыть об общей картине. Например, заголовок на Backpackit. Если вы меняете заголовок страницы в Backpackit, он немедленно заменяется в правой части страницы, но не меняется главный заголовок (тег title). При работе с Ajax вы должны думать о картине в целом, даже когда делаете локальные изменения. Асинхронное выполнение групповых операций. Конечно, с помощью Ajax вы можете менять значения одновременно во множестве полей формы, но иPэто может вызвать кучу проблем. Например, если я отмечуPнесколько чекбоксов, каждый из которых пошлет асинхронный запрос к серверу, я потеряю возможность отслеживать изменения чекбоксов, и этот неупорядоченный процесс будет раздражать и сбивать с толку. Прокрутка страницы и потеря места чтения. Другая проблема с появляющимся текстомP-- он может вызвать прокрутку страницы. Я могу спокойно читать страницу, как вдруг асинхронный JavaScript решит вставить параграф перед моим текстом, опуская мой текст ниже. Разумеется такое поведение раздражает и тратит мое времяP-- я должен возвращаться туда, где остановился. Блокирование поисковых машин. Ajax приложения, которые загружают много текста без перезагрузки страницы, могут стать большой проблемой для поисковых машин. Это похожу на проблему с адресами. Если пользователи могут приходить с поисковых машин, некоторый текст приложения должен быть статичным, чтобы поисковые роботы могли его индексировать. Запись добавлена 22.01.2007 в 12:34. Автор . Категории: , . Комментарии к этой записии можно отслеживать по . Вы можете , или со своего собственного сайта. теги: , , , .

Hosted by uCoz