Каковы риски описанного подхода к разработке веб-приложения?

#java #javascript #jquery

#java #javascript #jquery

Вопрос:

Мы хотим написать пользовательский интерфейс, состоящий из HTML, Javascript (jQuery) и CSS. Хотя первоначальная отправная точка будет обслуживаться веб-сервером, никаких шаблонов на стороне сервера не будет. Браузер будет взаимодействовать с сервером через restful интерфейс и отображать его пользовательский интерфейс.

Каковы риски этого подхода?

В идеале я хотел бы хороший, простой javascript OO api, который под ним выполняет http-вызовы на сервер для получения JSON-представлений ресурсов. Есть предложения относительно того, как это можно было бы структурировать?

У кого-нибудь есть опыт работы с шаблонами на стороне браузера?

Существует ли фреймворк, облегчающий этот стиль разработки?

Мы также будем определять ресурсы на стороне сервера, и я думаю следовать соглашениям ruby on rails. Например, если вы определяете пользовательский ресурс в routes.rb, у вас есть 7 шаблонов uri. Есть мысли?

Кстати, функциональность серверной части будет разрабатываться на java.

Ответ №1:

У меня большой опыт работы с этим подходом. Я могу гарантировать вам, что это работает — насколько хорошо в долгосрочной перспективе, я пока не знаю, но я чрезвычайно доволен этим (как разработчик).

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

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

Я заметил, что в наших приложениях пользовательский код на стороне сервера очень мал. Это означает, что важность серверной части очень мала (проверка, работоспособность, авторизация). Мы используем PHP, но просто потому, что у нас большой опыт работы с PHP.

Риски, безусловно, есть. При запуске и раннем переходе я заметил, что «младшим» программистам трудно наверстать упущенное. Для тех, кто не слишком знаком с Javascript, существует очень крутая кривая обучения, и в ней много изяществ.

Другой риск связан с производительностью. Мы советуем нашим клиентам использовать Google Chrome просто потому, что

И затем есть совместимость. Идея фреймворка в том, что он способен скрыть эту сложность. К счастью, браузеры все больше настраиваются в соответствии со стандартами, но обратная совместимость с (например) IE6 невероятно сложна.

Я бы не советовал использовать jQuery. Я нахожу jQuery скорее «плагином», чем реальной платформой. jQuery действительно великолепен, когда у вас есть веб-сайт и вы хотите добавить немного фантазии. В нем есть несколько очень хороших общих инструментов (манипулирование DOM и все такое), но ему очень не хватает в области бизнес-моделирования.

Я бы также не советовал использовать OO-подход. Для очень небольшого числа доменов OO является идеальным решением. Для большинства компаний это не так. И Javascript способен на гораздо большее, чем просто OO.

Ответ №2:

Проблема № 1 (и, возможно, единственная проблема) — это поисковая система. Не уверен, насколько хорошо ваш контент будет распознаваться / сканироваться / доступен для поиска. Основная причина заключается в том, что поисковая система не обязательно поймет ваш контент (поскольку он отображается только после выполнения Javascript).

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

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

1. Я бы не советовал этот подход для обычных «веб-сайтов». Однако для сложных, управляемых данными, специфичных для домена веб-приложений это Святой Грааль.