javascript: означает ли прогрессивное улучшение отсутствие json с ajax?

#javascript #graceful-degradation #progressive-enhancement

#javascript #изящная деградация #прогрессивное улучшение

Вопрос:

Я прочитал эту статью здесь, в которой говорится о прогрессивном улучшении для javascript, и автор упомянул:

Сначала создайте старомодный веб-сайт, который использует гиперссылки и формы для передачи информации на сервер. Сервер возвращает все новые страницы с каждым запросом.

Теперь используйте JavaScript для перехвата этих ссылок и отправки формы и передачи информации через XMLHttpRequest вместо этого. Затем вы можете выбрать, какие части страницы необходимо обновить, вместо обновления всей страницы.

Мне немного любопытно, означает ли это возврат разметки html на стороне сервера вместо json, что обычно означает создание разметки на стороне клиента? Есть ли недостаток у этого подхода?

Кроме того, я замечаю, что приложения, например Facebook, выглядят довольно искалеченными, когда я отключил Javascript (не могу публиковать обновления и т.д.). Означает ли это, что он не обрабатывает изящную деградацию должным образом?

Ответ №1:

Означает ли прогрессивное улучшение отсутствие json с ajax?

Нет, это, безусловно, не означает, что. Если JavaScript отключен, его нет XMLHttpRequest , поэтому нет ajax.

Теперь используйте JavaScript для перехвата этих ссылок и отправки формы и передачи информации через XMLHttpRequest вместо этого.

Биты JavaScript, которые перехватывают ссылки и отправку форм, могут свободно изменять место выполнения запросов, параметры URL и так далее, что URL-адреса с поддержкой ajax не обязательно должны быть идентичны URL-адресам без JavaScript. Например:

 <a href="/some/page.html">linky</a>
  

может быть перехвачен и превращен в XMLHttpRequest, который фактически выполнен для

  • /some/page.json , или
  • /some/page.html?ajax=1 , или
  • /bibbidi/bobbidi/boo (при всем том, что это имеет значение)

Комментарии:

1. мэтт, на самом деле я имел в виду, что если javascript отключен, URL-адреса должны возвращать пометки. Однако, если javascipt включен, то должен ли запрос ajax на тот же URL возвращать те же разметки или он должен возвращать json и использовать javascript для анализа и создания разметки?

2. Если JS отключен, конечно, URL-адреса должны указывать на соответствующие HTML-страницы.

3. Если JS включен, и вы не хотите изменять URL, вам нужен какой -то способ сообщить серверу, что это ajax-запрос, и вам, очевидно, придется соответственно запрограммировать сервер на ответ в другом формате вывода. Параметр запроса (как в /some/page.html?ajax=1 ) сделал бы свое дело.

Ответ №2:

Прогрессивное улучшение означает, что вы начинаете страницу с кода, который будет работать везде, а затем постепенно добавляете функциональность, которая принимается браузером этого пользователя. Хорошим примером этого является функциональность типа ajax с якорями. Когда страница загружается, вы можете использовать URL-адреса в hrefs, чтобы программы-пауки и браузеры, не использующие javascript, все еще могли получать содержимое. Но вы также добавляете onclick, который выполняет загрузку ajax. Таким образом, как включенные, так и отключенные клиенты получают наилучшее поведение, на которое они способны.

Комментарии:

1. Это означает, что spider может перейти по ссылке, чтобы получить содержимое, а браузер с поддержкой javascript может использовать onclick для загрузки данных без полного обновления страницы. Оба пользовательских агента получают наилучший опыт.

Ответ №3:

По сути, прогрессивное улучшение означает, что вы сначала ставите во главу угла создание полностью работающего веб-сайта без Javascript, а затем постепенно улучшаете свой веб-сайт, добавляя функциональность Javascript, а затем AJAX, сохраняя при этом работоспособность функций без javascript.

Это просто для того, чтобы позволить тем, у кого отключен Javascript, получить доступ к сайту и использовать его в обычном режиме.