Я склонен идти на постепенную деградацию с точки зрения поведения, меня не очень беспокоит то, как все выглядит на стороне клиента, если система работает и может выполнять ее с точки зрения требований бизнеса. Стили, цвета и все эти красивые вещи принадлежат только тексту, который подается браузеру, а не внутреннему коду, если целью стилистического элемента является предоставление функциональности, которая обязательна (такая ободряющая ссылка, чтобы показать, что мы на этой странице).
Тем не менее, я понимаю, что в то же время я люблю использовать jQuery и тот факт, что он дает мне лицензию на выполнение всевозможных классных выходок на стороне клиента за очень короткий промежуток времени. Так что я стремлюсь к созданию системы, которая является надежной (как в старые добрые времена, предшествовавшие всей этой бессмыслице сценариев :) и которая делает то, что должна. Достигнув этого, и для дополнительных похвал (и настоящего представителя) я буду использовать jQuery, чтобы сделать весь пользовательский опыт без компромиссов. Чтобы привести простой пример:
<a class="pageNo" href="/?p={$pageNo}">{$pageNo}</a>
- это ссылка на страницу, щелчок по которой приведет к загрузке результатов в div, реализация выглядит примерно так:
jQuery('.pageNumber').click(function(e) {
//stop the link from firing
e.preventDefault();
//steal the page number from the tag
var pageNo = jQuery(this).text();
//assign it to a hidden field
jQuery('#pageNo').val(pageNo);
//use $.load to fill up a div with the results
loadPage(pageNo);
});
Ссылка указывает на ресурс на сервере, который выглядит как www.random.com/things/?p=2
. Функция $.load
в jQuery извлекает эту страницу и вставляет ее в div. Если Javascript дает сбой или недоступен, это не имеет большого значения, потому что ссылка срабатывает как обычно, и страница посещается, как в старые добрые времена. Кроме того, сервер настроен на различие между запросом XHTTP и обычным и отвечает соответствующим образом. В этом случае jQuery сделал действительно аккуратное усовершенствование, которое никак не сказалось на аспекте предоставления услуг в проекте.
В наши дни я часто нахожу себя в разработке вещей с точки зрения того, как я мог бы использовать jQuery для этого, того и другого, и именно здесь я должен сделать шаг назад и вспомнить, что важные вещи имеют получить прямо перед тем, как экспериментальные и противоречивые «улучшения» могут начать внедряться. <sigh>