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