Pull to refresh

Иван Сагалаев о совмещении подходов к написанию Ajax-приложений

Reading time3 min
Views691
По мере взросления технологии Ajax появляются разные техники программирования. В частности, за последние несколько лет сформировалось два независимых подхода к созданию Ajax-приложений.

Об этой интересной проблеме рассуждает Фрэнк Соммерс на страницах своего блога. Он говорит, что к настоящему времени среди разработчиков удалось достигнуть некоторого консенсуса по вопросу, что считать приложением Ajax. В то же время существует гораздо больше разногласий по вопросам, как применять JavaScript и как распределять полномочия между клиентом и сервером.

Речь идет о различных пакетах для разработки, в которых используется разный подход. Одни из них, такие как Dojo или Prototype, дают пользователю полную свободу работы со средствами JavaScript и ориентированы больше на клиентскую сторону. В то же время в других пакетах разработки все средства JavaScript «спрятаны» в компоненты JSF, а основная работа выполняется на сервере.

Российский программист и веб-разработчик Иван Сагалаев более подробно рассказывает об этих двух подходах. При этом он подчеркивает, что два подхода вполне совместимы между собой, так что их можно удачно сочетать. Иван Сагалаев приводит примеры подобного сочетания.

Первый подход к созданию Ajax-приложений: передача HTML. Этот подход идеально подходит для страниц, которые при взаимодействии с сервером меняются незначительно. Например, некая форма, которая после отправки на сервер опять появляется на экране, а вместе с ней появляется какая-то дополнительная информация. В этом случае Ajax позволяет сократить количество данных, передаваемых по сети, принимая с сервера не всю форму с индикацией, а только саму индикацию. К плюсам такого подхода относится простота. Главный недостаток заключается в том, что при обновлении более сложных страниц, где меняются различные части, придется гонять от клиента к серверу большие объемы данных, а «весь смысл Ajax вырождается в отсутствие эффекта анимации иконки браузера в правом верхнем углу», пишет Сагалаев.

Второй подход к созданию Ajax-приложений: передача структурных данных. Это и есть суть Ajax в традиционном понимании, поскольку этот метод был придуман как раз для того, чтобы обратиться на сервер и получить описание какой-то части состояния системы, выраженной в XML. Плюс такого подхода — в максимальной гибкости. Можно придумать абсолютно любой формат и набор данных, который запрашивается у сервера, в котором будет в точности та информация, которой не хватает на клиенте, и ничего лишнего. На клиенте же с помощью Javascript'а можно изменить страницу как угодно.

Самый очевидный минус в передаче структуры — это гораздо больший объем и сложность программирования.

Первая сложность, по мнению Ивана Сагалаева, — это использование XML. Несмотря на то, что формат четкий и замечательный, в Javascript'е с ним можно работать только с помощью методов DOM. Впрочем, этот конкретный недостаток в последнее время решился с помощью формата JSON: данные возвращаются с сервера не в виде XML, а в виде кода Javascript.

Вторая сложность: построение HTML полностью вручную с помощью методов DOM. Но самое плохое, что этим самым в системе появляются два совершенно разных участка, в которых задается вид страницы: HTML-шаблон и код Javascript.

По мнению Сагалаева, два «несовместимых» подхода к созданию Ajax-приложений вполне можно совместить, если не ограничивать себя использованием только лишь XML. Применяются следующие методы:

* ответ с сервера передается в виде JSON-объекта;
* вещи, не связанные с генерацией HTML, выполняются скриптом, используя для этого данные из объекта;
* если нужно менять какие-то необычные участки HTML, то они передаются строками в том же самом объекте;
* изменяемые части HTML на сервере оформляются как небольшие включаемые шаблоны и используются и при начальном формировании страницы, и в Ajax-ответах.

«Единственное, что мне пока не нравится в этом подходе, это то, что на серверной стороне несколько увеличивается объем работы», — заключает Иван в своем «Маниакальном веблоге».
Tags:
Hubs:
Rating0
Comments20

Articles