Должен ли я вернуть HTML или JSON в одностраничном оформлении ajax - PullRequest
2 голосов
/ 08 октября 2010

Я хочу обновить текущий сайт электронной коммерции веб-форм ASP.NET с помощью удобной одностраничной проверки, и я ищу "наилучшую практику" для обновления данных.Страница будет состоять из нескольких частей: корзина, идентификация пользователя, способы оплаты, способы доставки и т. Д.

Если пользователь изменит способ оплаты, это может привести к изменениям в других частях страницы, таких как вариант доставкистановится недоступным, и общая стоимость изменяется.

Создаю ли я свои веб-сервисы, чтобы они возвращали полный предварительно рассчитанный HTML, когда пользователь что-то меняет на странице?Или я возвращаю какой-то объект-порядок в формате json и обновляю все различные части, которые нужно обновить с помощью javascript?

Второй вариант мне кажется чище, но он слишком медленный для обычной страницы?Или существует третий вариант?

Ответы [ 4 ]

3 голосов
/ 08 октября 2010

99,9% времени JSON будет более компактным, чем эквивалентный HTML: меньшая полезная нагрузка означает более быструю доставку ответа. Но еще более важная причина:

Что если разные страницы захотят вызвать ваш веб-сервис: одна хочет отобразить результаты в виде списка, а другая хочет отобразить их в виде таблицы, а третья хочет поместить результаты в jgGrid? Если ваш веб-сервис возвращает HTML, 2 из этих 3 страниц не могут использовать ваш сервис. Если ваш веб-сервис возвращает JSON, все 3 из этих страниц могут легко его использовать.

Что если через 2 месяца после развертывания ваш дизайнер / владелец сайта захочет изменить дизайн с таблицы на список? Если ваш веб-сервис возвращает JSON, ваш дизайнер может быстро и легко внести необходимые изменения, возможно, затрагивая только 1 или 2 файла в развернутой системе. Однако, если ваш веб-сервис возвращает HTML, вам нужно скомпилировать, протестировать и повторно развернуть весь веб-сервис только для поддержки этого глупого небольшого изменения макета.

Могут быть случаи, когда возвращение HTML является неизбежным злом (о котором я не могу думать, но я уверен, что оно есть). Когда это произойдет, сделайте себе одолжение и убедитесь, что HTML, который создает ваш веб-сервис, может быть изменен без перекомпиляции / повторного развертывания всего сервиса. Один сложный, но эффективный способ сделать это - использовать ajax для вызова страницы ASPX.

Обновление: Я забыл упомянуть: даже на самых медленных движках javascript (InternetExplorer) я всегда находил этот метод (использующий JS для анализа JSON и соответствующего обновления страницы) очень эффективным.

2 голосов
/ 08 октября 2010

На мой взгляд (!) Это зависит от общей архитектуры вашего приложения. Как правило, в традиционных веб-решениях рекомендуется сохранять минимальное количество логики в javascript и использовать только javascript для обновления представления с изменениями макета и т. Д.

Это очень быстро меняется с появлением новых мобильных устройств и решений на базе HTML5.

  • Если в вашем javascript уже много логики, все в порядке, чтобы вернуть JSON.
  • Если почти вся ваша логика находится на сервере, вы должны вернуть HTML.
  • Если у вас уже есть полностью визуализированный вид, и вы хотите обновить только небольшой фрагмент с помощью новая информация использовать JSON

Большую часть времени я выбираю то, что мне проще всего реализовать в данном случае использования.

1 голос
/ 09 октября 2010

Вы можете проверить это:

alt text

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

1 голос
/ 08 октября 2010

Я бы определенно пошел со вторым.Верните json, который затем заполняется в элементах управления со стороны клиента.

Мы используем этот подход в наших проектах.Это совсем не медленно, даже на самых сложных страницах.

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