Почему плохая практика — возвращать сгенерированный HTML вместо JSON? Либо это?

Почему плохой практикой является возврат сгенерированного HTML вместо JSON? Либо это?

Я немного с обеих сторон, на самом деле:

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

Основное преимущество использования HTML — это когда вы хотите заменить полную часть своей страницы тем, что возвращается из запроса Ajax:

  • Перестроить часть страницы в JS (довольно) сложно
  • У вас, вероятно, уже есть какой-то шаблонизатор на стороне сервера, который был использован для генерации страницы в первую очередь … Почему бы не использовать его повторно?

Обычно я не принимаю во внимание аспекты производительности, по крайней мере, на сервере:

  • На сервере создание части HTML или JSON, вероятно, не будет иметь большого значения
  • О размере материала, который проходит через сеть: ну, вы, вероятно, не используете сотни КБ data / html … Использование gzip для всего, что вы переносите, — вот что будет иметь наибольшее значение (не выбор между HTML и JSON)
  • Однако следует принять во внимание одну вещь: какие ресурсы потребуются клиенту для воссоздания HTML (или структуры DOM) из данных JSON … сравните это с добавлением части HTML на страницу; -)

Наконец, одна вещь, которая определенно имеет значение:

  • Сколько времени вам понадобится, чтобы разработать новую систему, которая будет отправлять данные в виде JSON кода JS, необходимого для внедрения их в виде HTML на страницу?
  • Сколько времени потребуется, чтобы просто вернуть HTML? И как долго, если вы сможете повторно использовать уже существующий серверный код?

И чтобы ответить на другой ответ: если вам нужно обновить более одной части страницы, все еще есть решение / взломать отправку всех этих частей в одну большую строку, которая группирует несколько частей HTML, и извлекать соответствующие части в JS.

Например, вы можете вернуть строку, которая выглядит следующим образом:

 <!-- MARKER_BEGIN_PART1 --> here goes the html code for part 1 <!-- MARKER_END_PART1 --> <!-- MARKER_BEGIN_PART2 --> here goes the html code for part 2 <!-- MARKER_END_PART2 --> <!-- MARKER_BEGIN_PART3 --> here goes the json data that will be used to build part 3 from the JS code <!-- MARKER_END_PART3 --> 

Это выглядит не очень хорошо, но это определенно полезно (я использовал это довольно пару раз, в основном, когда данные HTML были слишком большими, чтобы быть инкапсулированными в JSON) : вы отправляете HTML для частей страницы, которые нужна презентация, и вы отправляете JSON для ситуации, когда вам нужны данные …

… И чтобы извлечь их, я полагаю, метод подстроки JS сделает свое дело ;-)

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector