Используя Ajax, лучше генерировать дополнительную разметку на стороне сервера или на стороне клиента? - PullRequest
8 голосов
/ 29 июня 2009

Что лучше в запросе AJAX, ответьте с готовым HTML или ответом только с данными и напишите HTML, используя JavaScript, и этот JavaScript будет использовать предопределенный HTML-шаблон для помещения входящих данных и отображения на странице.

Создание HTML на сервере и отправка на страницу уменьшит код JS на стороне клиента, но увеличит размер ответа.

Отправка данных на клиентскую сторону уменьшит размер ответа, но увеличит код JS.

Что лучше и чаще всего используется?

Ответы [ 5 ]

5 голосов
/ 29 июня 2009

Я думаю, что правильное решение сильно зависит от контекста. Для данной ситуации может быть правильный ответ, но не существует единого размера, подходящего для всех ответов. Как правило, если я использую частичное представление, которое заменяется через AJAX, я верну html. Если я выполняю действие над небольшой частью чего-либо, я буду использовать JSON. Я, вероятно, с большей вероятностью буду использовать JSON, поскольку есть больше ситуаций, когда он подходит, но я стараюсь выбрать лучшее решение для рассматриваемой проблемы. Я использую ASP.NET MVC, хотя. Другие структуры, несомненно, имеют другие характерные решения.

4 голосов
/ 29 июня 2009

Я видел оба использованных. В дополнение к компромиссам, перечисленным в OP, я бы добавил:

  • Лучше отправлять информацию в виде данных, а не в формате HTML, поскольку тогда у вас будет больше возможностей для ее использования.
  • Каков ваш уровень комфорта с JS?
  • Вы можете использовать несколько пользовательских интерфейсов (на разных страницах) и повторно использовать данные на странице. Например, отображать данные в краткой и длинной форме, но использовать один и тот же источник данных. - позволить клиенту переключаться между ними на странице, не требуя отключения сервера.
  • Чистая реализация JS системы жидких шаблонов доступна для шаблонирования на стороне клиента: http://www.mattmccray.com/archive/2008/12/11/Liquidjs_A_Non-Evaling_Templat

Larry

3 голосов
/ 29 июня 2009

Я буду здесь чрезвычайно прагматичен:

Зависит от количества и сложности новой разметки.

Если вам нужно вернуть сложный фрагмент HTML, всегда лучше написать его на стороне сервера и вернуть в виде данных, его также легче поддерживать. Создание сложного HTML на стороне клиента обычно является загадочным, даже с использованием современных библиотек js. С другой стороны, если ваша дополнительная разметка мала, вы можете создать ее с помощью js. Я никогда ничего не делал с ASP.NET AJAX, но со страницей asp.net, представлением рельсов или JSP с небольшим фрагментом, таким как <p class='info'>Row Updated</p>, это сбивает с толку.

Пусть код говорит с вами. Если вы боретесь с кодом javascript для создания разметки на стороне клиента, возможно, он должен идти на стороне сервера.

И наконец: не беспокойтесь слишком сильно о размере HMTL против JSON, и, если вы это сделаете, тест запрашивает, не является ли разница незначительной.

1 голос
/ 29 июня 2009

Я полагаю, что более распространенный метод - передать массу разметки (HTML / CSS) через синхронную навигацию на сайт и сделать запрос / ответ AJAX как можно более скудным.

По общему признанию, сырой HTML, возвращающийся как ответ AJAX, довольно редко. Обычно это будет ответ JSON, так как это проще всего eval() с JS.

Поскольку в любом случае уже требуется большинство классов разметки и стилей, и они могут использоваться и "статическим" контентом, это оставляет вам возможность сохранять AJAX маленьким, аккуратным и точным.

0 голосов
/ 29 июня 2009

Обычно при обновлении небольших частей экрана вы можете отправить JSON обратно клиенту, и клиент может легко обновить себя.Если вы пытаетесь построить сложную сетку, лучше использовать UpdatePanel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...