Jquery против Google Closure и GWT Плюсы и минусы для разработки крупных веб-приложений - PullRequest
14 голосов
/ 10 декабря 2011

Я собираюсь приступить к разработке большого веб-приложения. Оно содержит мультимедиа (видео, аудио и изображения) и большую базу пользователей.

Трафик на веб-сайте также может быть очень высоким.

Так что здесь я немного запутался, стоит ли мне использовать jquery / jquery ui, Google Closure или GWT.

Я знаком с jquery и много работал над этим, но для GWT & Google Closure этомой первый раз.

Мне также комфортно в Java, поэтому я могу использовать GWT, но я уже упоминал, что это мой первый раз с GWT.

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

- Заранее спасибо

, если этот вопрос является дублированием чего-то другого, помимо публикацииссылка на сайт.

Ответы [ 3 ]

24 голосов
/ 10 декабря 2011

Я думаю, это действительно зависит от того, какой веб-сайт вы хотите создать.
GWT, вероятно, лучше всего подходит для так называемых SOUI (сервис-ориентированный пользовательский интерфейс) и SOFEA (сервис-ориентированная интерфейсная архитектура).
В веб-приложениях GWT у вас есть одна HTML-страница хоста, которая обслуживается вашим бэкэндом, и весь рабочий процесс пользовательского интерфейса и синхронизация потоков выполняются на стороне клиента GWT. Поэтому, если вы хотите создать приложение, похожее на десктоп, GWT, вероятно, является вашим лучшим выбором, потому что это отличный инструментарий, который позволяет разрабатывать сложные приложения, подобные десктопу, и предоставляет все преимущества разработки JAVA (тестирование, рефакторинг и т. Д.).

Для "традиционных" веб-сайтов web 2.0ish GWT может быть не лучшим выбором, потому что у него действительно несколько большая кривая обучения, чем у JS-фреймворков (jQuery, dojo и т. Д.).
Кроме того, эти веб-сайты имеют несколько страниц, и Javascript используется для улучшения пользовательского интерфейса, и не для того, чтобы полностью взять на себя синхронизацию потоков, а просто для того, чтобы сделать страницу более интерактивной. Для этих веб-сайтов у вас обычно есть хороший бэкэнд (Grails, Spring MVC), который заботится о синхронизации потоков, а инфраструктура JS просто отвечает за то, чтобы сделать пользовательский интерфейс более интерактивным и за некоторые изменения пользовательского интерфейса.

Примером такого рода веб-сайтов является stackoverflow. Если вы нажмете на ссылку, она загрузит новую страницу HTML. Если вы нажмете на ссылку «Входящие», она будет использовать jQuery, чтобы открыть всплывающее окно, получить ваши уведомления и отобразить их.

Google Closure, вероятно, ближе к jQuery, чем к GWT. Я думаю, что самая большая точка продажи Google Closure - это HTML-шаблоны на стороне клиента и на стороне сервера. У меня нет большого опыта работы с Google Closure, но он активно используется Google для своих веб-приложений.

Поскольку я работал в основном с GWT, вот список преимуществ и недостатков, которые я могу придумать в отношении GWT:

Преимущества :

  • Надежный инструментарий
  • Средства разработки (тестирование, рефакторинг, затмение, отладка в реальном времени)
  • Кросс-браузерная совместимость из коробки (с некоторыми оговорками)
  • Наличие сторонних библиотек (сериализация DTO, инфраструктуры MVP и т. Д.)
  • Только клиентский код загружается на клиент (с помощью JS-фреймворков вы загружаете весь фреймворк, даже если вы используете только одну конкретную функцию)
  • GWT-RPC и RequestFactory для связи с бэкэндом JAVA (не нужно сериализовать или десериализовать себя).

Недостатки :

  • Большая кривая обучения
  • Может не подходить для небольших улучшений пользовательского интерфейса
  • Компиляция может занять некоторое время, если база кода велика и должны поддерживаться разные браузеры и языки
  • Сгенерированный Javascript может стать большим в сложных приложениях (решение: разделение кода)

В качестве дополнительного примечания: с каждой новой версией GWT недостатки становятся меньше проблемой, поскольку каждая новая версия GWT улучшает время компиляции и размер кода. GWT 2.5 должен иметь действительно хорошие улучшения в этой области.

Подводя итог: если вы хотите разработать настольный компьютер, такой как интерактивное веб-приложение, я думаю, что GWT, вероятно, ваш лучший выбор.
Однако, если вы хотите разработать более традиционный веб-сайт "Web 2.0ish", лучше использовать jQuery / Google Closure.

6 голосов
/ 10 декабря 2011

GWT привносит все преимущества Java IDE в то, что по сути является разработкой JavaScript.Как и JQuery, GWT «нормализует» браузеры для вас, поэтому вам обычно не нужно проверять пользовательский агент или что-то еще.Преимущество Java IDE - это действительно надежная поддержка рефакторинга для изменения имен, упаковки, сигнатур методов и других вещей.ЕГО БЫЛО 2 ГОДА ПОСЛЕ ТОГО, КАК Я СДЕЛАЛ GWT, но я думаю, что его недостатком, особенно в крупных проектах, является этап компиляции.Это не быстро, особенно когда вы отпускаете его для компиляции всей Java для каждого из браузеров.Если я правильно помню, и если он все еще делает это сегодня, он создает действительно большой файл JavaScript для каждого из IE, FireFox, Chrome, Opera и Safari.Это требует времени, мой друг.Здесь также есть инфраструктура для модульного тестирования, которая интересна, хотя и медленнее, чем ее чистый аналог на Java.

GWT Преимущество: надежная поддержка инструментов через экосистему Java IDE.Ответственность GWT: время компиляции

Я не так много знаю о JQuery, кроме того, что он, похоже, взломал cookie-файл совместимости браузера, позволяя вам, честному разработчику, сконцентрироваться на своем приложении.Что я знаю о JQuery, так это то, что у него, кажется, есть разум разработчиков.Мне, не являющемуся экспертом по JavaScript, удалось интегрировать JQuery в мое веб-приложение на Java и добавить «плагин» для предварительного просмотра изображений под названием imgPreview (http://james.padolsey.com/javascript/new-jquery-plugin-imgpreview/), позволяющий просматривать всплывающие изображения в моем пользовательском интерфейсе на основе таблиц за 30 минут).во второй половине дня. Браузеры тоже выросли за последние 2 года, так что теперь вы можете динамически отлаживать свой JavaScript в режиме реального времени в консоли (Chrome это подходит, но в FireFox и Safari он практически не отличается), а также настраиватьстили и все виды прямых манипуляций с DOM.

Преимущество JQuery: упрощение JavaScript без интерпретации и забота о разработчиках. Ответственность JQuery: сложно реорганизовать JavaScript на уровне, близком к уровню приложения Java.

Мои 2 цента стоит.

3 голосов
/ 11 декабря 2011

Основным преимуществом Closure Library по сравнению с jQuery является то, что он разработан для использования преимуществ Closure Compiler (в расширенном режиме).Вы получаете быстрый цикл редактирования / отладки исходного javascript и библиотеку кода достаточного размера, и вашему клиенту остается только ждать кода, который вы фактически используете (при условии, что вы его скомпилировали)., стоит воспользоваться «режимом разработки», чтобы избежать компиляции.

...