JQuery против стандартного программирования Backend

Мне любопытно узнать предпочтения людей...

Недавно я перешел в jQuery, и я люблю его. Тем не менее, я обнаружил, что я заменяю множество (несколько тривиальных) бэкэнд (tech: ASP.NET) с крошечными функциями jQuery. Например, вместо того, чтобы назначать навигационную кнопку в качестве внутреннего элемента управления и изменять свой класс, когда его страница приземлилась (т.е. Выделите кнопку "около", когда на странице о нас), я просто проанализировал URL-адрес и добавил класс к кнопке:

var pathname = window.location.pathname;
if (pathname == "/about/") {
    $("#nav-about").addClass("selected");
}

Решения, подобные этим, выглядят довольно просто (возможно, слишком просто), но я всегда опасаюсь слишком сильно полагаться на JavaScript. Кто-нибудь еще делает с этим подобные вещи, и если да, то как вы поддерживаете такой код? Как вы узнаете, где найти баланс между хорошим серверным кодом, который работает каждый раз, и быстрым, фантастическим, блестящим jQuery, который работает практически каждый раз, за ​​исключением случаев, когда пользователь может отключить JavaScript?

ИЗМЕНИТЬ

Я не говорю об этом конкретном экземпляре... Я говорю о небольших улучшениях, подобных этому. Какую линию вы рисуете, когда речь заходит об усовершенствованиях jQuery или просто делать это на сервере? Спасибо:)

Ответ 1

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

Однако без этой роскоши я считаю, что такие ярлыки, как это, "подталкивают" его к использованию jQuery - конечно, вы можете просто сказать "если у них отключен Javascript, тогда они просто не увидели, что страница навигации выделена, это не имеет большого значения", - хотя это может быть правдой, очень важно иметь менталитет, чтобы избегать более надежного и надежного способа сделать это на стороне сервера без особого основания. Важно прекратить замену тестируемых на стороне серверов решений с "более легким" кодом на клиенте. Это заманчиво, но не всегда лучшая вещь для вашего проекта и ваших пользователей, некоторые из которых будут отключены JS и могут смотреть на навигацию, задаваясь вопросом, где они находятся, и оказаться "потерянными".

В целом, я бы рекомендовал вам вернуться к серверному коду для этого. Просто не нужно его бросать.

Ответ 2

Javascript - дополнительный слой поверх HTML и CSS. Когда вы строите доступный веб-сайт, все должно быть доступно только в HTML. И CSS, и Javascript следует использовать только для улучшения пользовательского интерфейса.

Я бы даже сказал, что для каждого интерфейса страницы или RIA должна быть многостраничная альтернатива.

Итак, чтобы ответить на ваш вопрос, это определенно то, что вы хотели бы закодировать на сервере, а не на клиенте.

Ответ 3

Я чувствовал, что основная проблема заключается в поисковых системах, поскольку они не анализируют js. Любой контент типа контента, с которым я всегда убежден, работает без него, но небольшие дизайнерские прикосновения, я думаю, в порядке.

Ответ 4

Проблема с jQuery заключается в том, что он готовится к документу. Раньше не было большой сделки, но если у вас тяжелая страница, ни один из этих предметов подсветки не появится, пока остальная часть страницы не будет загружена. Это означает, что вы можете увидеть "поп", поскольку все улучшения jQuery срабатывают.

Лучше всего сделать эту роль на стороне сервера (особенно когда .NET имеет Sitemap уже создан для вас)

Ответ 5

Откуда вы знаете, куда ударить баланс между надежным сервером код, который работает каждый раз и быстро, фантастический, блестящий jQuery, который работает довольно много раз, за ​​исключением случаев, когда пользователь может быть отключен JavaScript?

Это может показаться грубым, но предпочтительнее менее 5% пользователей (и снижение) является несправедливым. Это будет просто причиной кошмара пользовательского интерфейса для вас.

Не забудьте провести различие между сервером и клиентом. Код на стороне сервера такой: Код, который принадлежит серверу и не влияет на , как клиент видит конечный продукт; позвольте просто сказать, что он неизменен для клиента. Отображение конечного продукта изменчиво и время от времени рекомендуется быстро изменять, чтобы обеспечить более глубокое понимание пользователем.

Ответ 6

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

Для меня программирование на стороне сервера должно быть как минимум так же просто, как на стороне клиента.

Ответ 7

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

Тем не менее, я понимаю, что в то же время мне нравится использовать 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. Функция jQuery $.load извлекает эту страницу и вставляет ее в div, ajaxily. Если Javascript выходит из строя или недоступен, это не имеет большого значения, потому что ссылка срабатывает как обычно, и страница посещается, как в старые добрые времена. Кроме того, сервер настроен на различие между запросом XHTTP и нормальным и отвечает соответствующим образом. jQuery, в данном случае, сделан для действительно опрятного улучшения, которое совсем не мешало аспекту предоставления услуг проекта.

В наши дни я часто нахожу себя в разработке вещей с точки зрения того, как я могу использовать jQuery для этого, этого и другого, и что там, где я должен сделать шаг назад и вспомнить, что важный материал имеет, чтобы получить право до того, как начнутся развернутые экспериментальные и противоречивые "улучшения". <sigh>

Ответ 8

Мне нравится jQuery сам, но могут быть проблемы доступности и функциональности, о которых я должен беспокоиться. Я часто тестирую страницы с отключенным Javascript, чтобы убедиться, что он будет работать с этой аудиторией (на публичных терминалах часто отключен Javascript IMHO), а в Lynx, чтобы получить представление о том, как экранный читатель увидит мою страницу.

Вы можете проверить свою страницу на нескольких инструментах здесь:

http://www.w3.org/WAI/ER/tools/complete

чтобы обеспечить доступ к вашим страницам.

Ответ 9

Так как я не могу оставлять комментарии здесь (пока), я вхожу в это как ответ, хотя это скорее комментарий. (Хотя, вероятно, не вписывается в комментарий!)

Для примера, который вы даете в оригинальной записи, (и я знаю, что вы сказали, что задаете больше общего смысла, а не этого конкретного смысла, поэтому я отвечаю общим решением). Я предпочитаю делать это "навигация" с чистым CSS.

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

<body class="about-section">
  <h1>This is a page in our About section!</h1>
  ...
  <ul id="nav">
    <li id="nav-home"><a href="/">Home</a></li>
    <li id="nav-whatever"><a href="/whatever/">Whatever</a></li>
    <li id="nav-about"><a href="/about/">About</a></li>
  </ul>
</body>

И ваша таблица стилей:

    #nav a {
      color:#00F;
    }
    body.home #nav-home a,
    body.whatever-section #nav-whatever a,
    body.about-section #nav-about a {
      color:#F00;
    }

Добавление и обслуживание страниц обрабатывается одним объявлением CSS. Он не требует программирования на стороне сервера NOR для JavaScript; вы просто вступаете в брак с классом тела (или другим идентификатором) с элементами, которые вы хотите по-разному.

Удачи!
-Mike

Ответ 10

У Джейсона есть другой подход: код вроде JavaScript, но на сервере, посмотрите ItsNat. В это время работает только на Java, а не .Net: (

Как вы можете видеть в этом примере, ваш веб-сайт может работать с включенным JavaScript (Single Page Interface) или отключен (на основе страницы) с помощью тот же исходный код.