Я не думаю, что может быть «лучшее решение» для любой данной ситуации. Только, возможно, «подходящее решение» для конкретного. Это действительно зависит от того, что вы пытаетесь сделать. Что для меня значит грациозная деградация:
- создать «достаточно хороший» интерфейс, который работает на максимально возможном количестве браузеров (как для настольных, так и для мобильных устройств)
- Ненавязчиво добавлять в некоторые сценарии (методы проверки, элементы интерфейса, такие как вкладки и ползунки и т. Д.), Которые будут присутствовать, только если браузер, в который загружена страница, имеет функции, необходимые для их работы.
Использовать ли HTML или JSON в ответе сервера очень субъективно, я часто испытываю трудности с выбором между ними. Можно возразить, например, что получение набора пар ключ-значение с сервера и рендеринг их в существующий элемент select означало бы больше кода и, следовательно, больше времени, затрачиваемого на кодирование, и больше потенциальных ошибок. Вместо этого вы можете просто запросить предварительно собранный элемент select с сервера и вставить его в контейнер. Логика построения элемента уже находится на сервере, поэтому собирайте его дважды на двух разных языках.
Другая перспектива заключается в том, что JSON сводит к минимуму использование полосы пропускания, поэтому стоит приложить дополнительные усилия, чтобы проанализировать некоторые JSON и создать некоторую разметку на клиенте. Мне легко не согласиться с этой точкой зрения по нескольким причинам (я не обобщаю, не поймите меня неправильно). Прежде всего, многие, многие веб-серверы настроены на сжатие / дефляцию / gzip своих выходных данных, и многие браузеры принимают сжатый контент. Разметка чрезвычайно сжимаема, так как содержит избыточные данные (<strong></strong>
). Поэтому разумно учитывать, что размер ответа JSON не будет в подавляющем большинстве случаев меньше, чем ответ с разметкой. Во-вторых, большой набор данных может означать значительное время выполнения на клиенте (неприятные, вложенные циклы являются обычным явлением - это очевидно в некоторых из вопросов, которые появляются здесь).
Я советую вам попытаться понять достоинства и недостатки каждого подхода и использовать эту информацию. Возможно, вы захотите прочитать это:
http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html