перемещение большей логики веб-презентации в javascript через jQuery - PullRequest
4 голосов
/ 12 февраля 2009

Я создаю новое веб-приложение в asp.net. Наш бэкэнд имеет существующие сервисы WCF / REST, которые возвращают JSON. У меня также есть библиотека JavaScript, которая завершает вызов / использование этих служб JSON для меня на стороне клиента. Это позволяет приложению совершать вызовы AJAX на стороне клиента и выполнять такие действия, как ретранслятор на стороне клиента (Рик Страл (Rick Strahl) писал о том, как делать это с jQuery). Это работает довольно хорошо и обеспечивает быстрое чувство web 2.0.

Вопрос в том, что у меня есть серверная часть и библиотека JS для сантехники. Должен ли я создавать все свои основные элементы управления списками и другие функции полностью на стороне клиента? Я уже создал пару страниц с этим, и немного неприятно видеть ничего в моем коде позади! Я пытаюсь получить мнения о плюсах и минусах этого подхода.

Опять же, библиотека JS собрана, серверная часть - это сборка, так что мне просто нужно строить страницы и логику, используя jQuery (повторители на стороне клиента и т. Д.) Или более традиционный подход на стороне сервера.

Мысли и предложения приветствуются !!

Ответы [ 4 ]

3 голосов
/ 12 февраля 2009

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

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

Может быть промежуточное положение, при котором базовая структура страницы загружается нормально, а таблицы и списки загружаются с использованием AJAX с доступной ссылкой (которая будет скрыта для пользователей с javascript) для перезагрузки страницы все данные присутствуют.

1 голос
/ 17 февраля 2009

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

Например, если необходимо отобразить таблицу данных, вместо того, чтобы отправлять ее как json, а затем шаблонизировать ее на клиенте, что не очень хорошо показывает намерения, отправьте ее в виде обычного html-таблицы данных ASP.NET. фрагмент. Сетка данных, расположенная на .aspx, по крайней мере, показывает намерение отобразить табличные данные. И, вероятно, так проще сделать.

Теперь предположим, что вы хотите отобразить действительно необычную сетку данных, которую было бы трудно сделать, используя только ASP.NET. Я бы по-прежнему отправлял его как простую сетку данных, потому что jQuery может гораздо проще нарезать и нарезать его на клиенте, чем ASP.NET на сервере. И, вероятно, это также сэкономит пропускную способность. (О, я ВСЕГДА выключаю ВСЕ ViewState!) Я пытаюсь позволить ASP.NET выполнять семантику и простые вещи, в которых он хорош, а JQuery сделает все остальное.

На практике все становится более сложным и нечетким. Как давний парень Model View Presenter, я начинаю думать о View и Presenter как о клиенте. Страница .aspx - это просто шаблон, который показывает суть страницы. А выделенный код (.aspx.cs) - это не что иное, как тонкий слой, который делегируется модели.

Хотя я был очень доволен результатами этой архитектуры, я все еще чувствую смутное неудобство, в основном потому, что не могу выполнить модульное тестирование докладчика с помощью старого надежного NUnit, а также потому, что jQuery и JavaScript настолько мощны, что как играть с динамитом.

Обычные эксперты по архитектуре молчат, это слишком ново. Я на 100% уверен, что многие уже изучали именно такую ​​ситуацию еще 30 лет назад, и рано или поздно все это будет подробно обсуждаться везде, куда бы вы ни посмотрели. Но это очень интересная ситуация, в которой мы сейчас находимся, я бы хотел, чтобы больше людей ставили свои 2 цента. Где Мартин Фаулер? Скотт Беллвер? Дядя Боб?

Mike

1 голос
/ 12 февраля 2009

Можете ли вы гарантировать, что у вашей аудитории всегда будет включен JavaScript при просмотре вашего сайта? Если вы можете сделать это требованием, тогда сделайте внешний интерфейс в JS, если вы думаете, что это будет проще. Если вы не можете этого гарантировать, то вам нужно сделать это на стороне сервера, чтобы пользователи без JavaScript могли видеть вывод. Вы не хотите, чтобы люди ничего не показывали, верно?

0 голосов
/ 12 февраля 2009

Мне интересен подход. Это позволяет вам быстро показывать страницу и лениво показывать списки и другие вещи, которые живут в хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...