Стили Ajax |
|
Ajax набирает обороты в web-индустрии и всё больше веб-разработчиков внедряют данную технологию в свои сайт, но, не многие знают, что существует два принципиально разных подхода к написанию ajax-приложений. И так, профессиональные разработчики выделают:
Несмотря на то, что некоторые мастера считают эти два метода несовместимыми между собой, мне кажется, что это не совсем так и некоторые даже не самые лучшие с точки зрения профессионального программиста скрипты написаны именно с внедрением обоих методов. Что бы не кормить одной только теорией, попытаемся разобраться немного подробнее ою этих самых подходах к Ajax. Передача HTMLПодхода с передачей HTML-а прекрасно подходит для веб-страниц, которые взаимодействуя с сервером меняются совсем несильно. Например, при нажатии на какую-либо форму на странице и передачи информации на сервер на этой же странице опять появляется сообщение, что все прошло хорошо и скрипт корректно выполнил свою работу, либо выводиться пользователю список ошибок или отказ. В этом случае ajax значительно позволяет сократить количество данных, передаваемых серверу, что сокращает время и трафик (он может быть дорогим) пользователя и значительно сокращает работу сервера, ведь он возвращает в браузер пользователя не всю страницу целиком, а лишь необходимые данные.
К минусам подхода я бы отнес то, что он существенно хуже работает для "высокодинамических" страниц, где от одного действия меняются разные части. Например длинный тред комментариев, где по сабмиту формы с текстом с сервера должен прийти новый комментарий и, скажем, обновиться строчка "N комментариев", которая находится в совсем другом месте страницы. Здесь, если следовать автоматической модели, надо передавать на страницу ту ее часть, которая включает все нужные куски, даже если между ними есть данные, которые и не предполагались меняться. На практике это может привести к тому, что по сети гоняются немаленькие объемы данных, сравнимые с размером собственно страницы, и весь смысл ajax’а вырождается в отсутствие эффекта анимации иконки браузера в правом верхнем углу. Причем мое подчеркнутое "может", к сожалению, оказывается правдой чаще, чем хотелось бы, потому что такой полностью автоматический подход привлекает очень много разработчиков, которые не имеют времени и/или желания разбираться со скриптованием, а полагаются на то, что фреймворк поможет им сделать это малой кровью. Поэтому они не смогут ни вовремя заметить, ни правильно исправить проблемы более низкого уровня. Передача структурных данныхПередача структурированных данных была сутью ajax’а еще когда он назывался "XmlHttpRequest". То есть он был придуман для того, чтобы обратиться на сервер и получить описание какой-то части состояния системы, выраженной в XML — языке, который предназначен для удобной машинной обработки. Сразу скажу, что несмотря на то, что так было задумано, свет клином именно на XML-ответах не сошелся, и структуру можно передавать и по-другому, о чем чуть позже. Плюс такого подхода — в максимальной гибкости. Можно придумать абсолютно любой формат и набор данных, который запрашивается у сервера, в котором будет в точности та информация, которой не хватает на клиенте, и ничего лишнего. На клиенте же с помощью Javascript’а можно изменить страницу полностью и как угодно. Взять тот же пример с комментариями: на сервер отправляется комментарий, а в ответ возвращается например такое: <comment status="ok" quantity="12"/>Что означает, что комментарий прошел валидацию, и теперь их на странице 12. Все остальное можно сделать скриптом: пририсовать новый блок комментария, перекопировать туда текст формочки, фомочку удалить, обновить количество новой цифрой. Самый очевидный минус в передаче структуры — это гораздо больший объем и сложность программирования. Причем складывается она из нескольких вещей. Первая сложность — это использование XML’а. Несмотря на то, что формат четкий и замечательный, в Javascript’е с ним можно работать только с помощью методов DOM. А это муторно писать и очень сложно читать: слишком много текста для производства простых вещей. К счастью, этот конкретный недостаток в последнее время решился с помощью формата JSON: данные возвращаются с сервера не в виде XML, а в виде куска Javascript’ового кода создающего объект нужной вам структуры: response = {status: 'ok',quantity: 12}Он тут же в скрипте выполняется eval’ом и вы получаете объект response, у которого есть response.status и response.quantity. Очень удобно и без всяких getElementsByTagName('response')[0].Кроме избегания сложности разбора XML-ответа, остается второй момент: построение вручную DOM-методам самого HTML, что так же затруднительно и не очень хочеться. Но самое плохое, что этим самым в системе появляются два совершенно разных места, в которых задается вид страницы: HTML-шаблон и Javascript’овый код. А значит изменения придется аккуратно дублировать и там, и там. И еще это значит, что для написания HTML’а вам теперь нужен человек, который умеет писать и HTML, и тяжелый Javascript. "Maintenance hell", иными словами. Вообще, когда я начинал играться с XmlHttpRequest’ом, такой подход казался мне самым естественным: раз штука умеет парсить XML, значит это и есть правильный путь ее использования. Результатом тех упражнений стал довольно прикольный клиентский ajax-интерфейс к чату с множеством всяких фенечек. Тогда, в 2003 году, он был жутко передовым технологически, но раскрутить его во что-то известное мы так и не сподобились. Я даже удивился сейчас, что он до сих пор работает. Пусть теперь тут ссылочка для истории лежит :-) Объединение лучших чертТа несовместимость, о которой говорит Фрэнк Соммерс, присутствует только с точки зрения программиста, который выбирает передачу HTML, и не хочет погружаться в скриптование вообще. Однако если программист не против этого принципиально, то передачу структуры вполне можно объединить с передачей HTML’а. Принцип, на самом деле, очень простой:
Удачи в освоении Ajax и успехов в программировании... |
Разделы сайта
- Интернет новости
- Как создать сайт
- Хостинг сайтов
- Технологии и стандарты
- Веб-дизайн
- Вёрстка (xHTML коддинг)
- Веб-программирование
- SEO (раскрутка сайтов)
- Бесплатный хостинг
- Защита компьютера
- Мошенничество в сети
- Администрирование
- Заработок в Интернете
- Полезные статьи
- Блогосфера
- Уроки для дизайнеров
- Онлайн учебники
- Книги и справочники
- Скрипты
- Клипарт
- Социальная сеть
- Форум веб-мастеров
Последние статьи
Самое популярное
- Взлом пароля почты или как узнать пароль e-mail
- Создание шапки для сайта в Adobe Photoshop
- Скачать шапки для сайта
- Как украсть красивый номер ICQ?
- Бесплатные иконки для сайтов
- Функция mail в php. Отправляем сообщение
- Можно ли взломать Вконтакте - социальная сеть
Последние новости
- Отсутствие Интернета приводит к депрессии и мыслям о самоубийстве
- «ВКонтакте» посоветует пользователям популярные статьи
- Браузер Firefox получит кнопку «Сбросить Firefox»
- USB-флешка с голосовым управлением
- Общественный Интернет-канал в Москве
- Панорамы соборов и дворцов на «Яндекс.Афиша» в честь «Ночи музеев»
- Facebook определил стоимость 1-ой акции на IPO
Разделы форума

