GWT: Можно ли запустить проект с использованием GWT, а затем в конечном итоге перейти на полноценный javascript?

Я думаю о запуске веб-приложения с использованием GWT, потому что мне удобнее использовать Java, чем Javascript. Кроме того, я хочу узнать о передовых методах веб-разработки и о том, как GWT оптимизирует Javascript. Я хочу проанализировать вывод javascript, созданный GWT, чтобы научиться писать хороший Javascript. Возможно ли это, или javascript, созданный GWT, неразборчив, чтобы его мог понять только браузер?

РЕДАКТИРОВАТЬ: Да, я посмотрел *.nocache.js, и он неразборчив. Хотя я бы пока продолжил работу с GWT, я хотел бы знать, существует ли какая-либо среда веб-разработки, которая поможет мне быстро настроить веб-приложение, но попутно поможет мне ознакомиться с лучшими практиками в Javascript? Я предпочитаю, чтобы мое веб-приложение не было слишком тесно связано с этой структурой, и я мог бы программировать на javascript (+jquery), если захочу.


person Salil    schedule 21.09.2011    source источник
comment
Вы рассматривали JSNI? Это позволяет вам писать/вызывать собственный javascript в вашем приложении GWT, что делает возможной интеграцию jQuery (или любой другой библиотеки JS, если на то пошло).   -  person Ashwin Prabhu    schedule 21.09.2011
comment
Компилятор по умолчанию выдает запутанный JavaScript, но вы можете изменить вывод на подробный, и он станет разборчивым. Если вы используете Eclipse, щелкните правой кнопкой мыши свой проект ›› Google ›› GWT Compile ›› Выберите Detailed в качестве стиля вывода. Дополнительная информация code.google.com/intl/ de-DE/webtoolkit/doc/latest/   -  person Chris Boesing    schedule 21.09.2011
comment
Краткий ответ: нет. GWT выполняет большое количество скриптов за кулисами, которые, хотя и возможно прочитать, не будут чем-то, что вы сможете использовать не-GWT способом. Как уже говорили другие, лучшим вариантом для вас может быть JQuery или JSNI.   -  person Chris Cashwell    schedule 22.09.2011


Ответы (7)


Конечно, вы всегда можете создать в GWT крохотный «кейсовый» проект, скомпилировать его с помощью -style PRETTY или DETAILED, а затем проанализировать.

  • что GWT делает для оптимизации и
  • какие различия создает GWT для разных браузеров,

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

Тем не менее, вы можете изучить несколько хороших концепций GWT (на самом деле больше из чтения документации GWT, чем из анализа сгенерированного кода) и попытаться повторно реализовать их для проекта на чистом JavaScript:

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

Кроме того, вы можете попробовать написать несколько хороших приложений GWT и выяснить, какие концепции вы используете. Многие из них будут выглядеть естественными в Java, но не в JavaScript (это мой опыт создания нескольких прототипов JavaScript, а затем переписывания их в GWT). Вы можете обнаружить, что ваш Java-код по мере его роста легче поддерживать, чем тот же код, написанный с использованием наивного подхода к JavaScript. Если подумать, некоторые концепции можно хорошо перенести в JavaScript, некоторые не очень, а для некоторых вещей в JavaScript есть свои собственные (динамические) концепции, которые не будут хорошо работать в Java. В любом случае, прочитайте/посмотрите, что Дуглас Крокфорд говорит о концепциях JavaScript.

Не забывайте, что одной из причин создания GWT является то, что он должен позволить использовать типичную архитектуру, шаблоны и идиомы Java на стороне клиента, что было бы очень трудно применить. при написании кода на JavaScript.

person Chris Lercher    schedule 22.09.2011

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

Но использование GWT, на мой взгляд, является хорошим способом заглянуть в мир «веб 2.0».

person Chris    schedule 21.09.2011

Хотя GWT может генерировать «читаемый» javascript с помощью параметра -PRETTY, он не будет действительно читаемым. Код будет труден для понимания, и он будет структурирован совершенно иначе, чем вы бы сделали это с помощью jQuery или любой другой библиотеки javascript. Тестирование и отладка будут практически невозможны за пределами мира Java.

С другой стороны, вы можете получить доступ к простому Javascript из GWT, используя JSNI, и наоборот, используя gwt-exporter< /а>.

person Luismahou    schedule 21.09.2011

Вам может показаться, что это так же сложно, как пытаться выучить ассемблер на основе вывода скомпилированной программы на C. Вы, дети, помните C? Ассемблер? Во всяком случае, я бы посоветовал вам создать простую программу GWT, эквивалентную чему-то вроде «Hello world», и использовать приведенный здесь совет, чтобы получить довольно незапутанный вывод. Если вы можете понять Javascript, который вы видите, и он имеет мимолетное сходство с тем, что человек мог бы написать, используя Javascript непосредственно для выполнения той же задачи, то, возможно, это сработает. Если, с другой стороны, получается огромное количество непонятной инициализации и настройки, а также сильная зависимость от внешних функций Javascript для выполнения даже самых простых действий, то, возможно, изучение Javascript по старинке будет лучшим подходом. .

person Steve J    schedule 21.09.2011
comment
Я знаю базовый Javascript. Но я хочу постепенно погрузиться в программирование Javascript производственного качества, желательно, понимая, как библиотеки и фреймворки структурируют код. - person Salil; 22.09.2011

Я вижу, что он сжат по умолчанию, почти невозможно прочитать. Может быть, у вас есть варианты, чтобы прояснить это.

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

Если вы хотите написать что-то на js, используйте jquery.

person Pablo Castilla    schedule 21.09.2011
comment
Это неправильно, компилятор GWT предоставляет множество опций для настройки выходного javascript, который он создает. С другой стороны, запутанный выходной javascript не имеет ничего общего с тем, как gwt поддерживает новые браузеры. - person pistolPanties; 21.09.2011

Вы можете экспортировать javascript API из вашего gwt, чтобы вы могли взаимодействовать с вашим кодом gwt из raw js или jquery.

http://code.google.com/p/gwt-exporter/

Это позволит вам создать кросс-платформенную библиотеку gwt, которая представит ваш скомпилированный API в необработанном javascript. Очень полезно для экспорта вашей работы в gwt в сырые проекты js.

Это также хороший проект, чтобы научить вас мощному java и javascript; он использует аннотации и собственный генератор для экспорта методов и полей Java.

person Ajax    schedule 01.05.2012

Взгляните на Отладка и компиляция. Вы можете использовать аргумент -style PRETTY, чтобы компилятор сгенерировал читаемый javascript.

Обновлять :

Компилятор GWT делает много вещей при компиляции вашего кода с Java на Javascript. Рэй Кромвель рассказал об этом на Google I/O 2010 в своей презентации Оптимизация приложений с помощью компилятора GWT. Это очень полезно, если вам интересно, что компилятор GWT делает для оптимизации javascript.

person pistolPanties    schedule 21.09.2011
comment
Меня больше интересует, как фреймворки организуют код, скажем, по шаблону MVP, чем оптимизация. - person Salil; 22.09.2011
comment
@Salil: GWT не организует код в шаблон MVP - это должен делать программист/архитектор приложения. - person Chris Lercher; 22.09.2011