Могу ли я использовать GWT (или Script #) для написания отдельных функций в Java (или C #) и компилировать их в JavaScript? - PullRequest
4 голосов
/ 15 июля 2009

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

Или GWT может принести слишком много ресурсов библиотеки / поддержки, чтобы сделать это разумным выбором?

Для будущих проектов у меня тот же вопрос о Script # (компилятор C #).


Followup:

Script # , кажется, создает очень читабельный JavaScript из C # (на страницах 35-51 приведены некоторые примеры кода C # и сгенерированного кода JS).

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

Ответы [ 3 ]

2 голосов
/ 16 июля 2009

Да, вы можете сделать это. Вот способ вызвать его из Javascript ( Source ):

Как я могу вызвать один из моих методов GWT Java со страницы хоста моего приложения?

Для этого вам нужно сначала нужно создать метод JSNI который создает метод JavaScript, который в свою очередь делает вызов к вашей Java метод. В вашем приложении GWT onModuleLoad (), вы бы назвали это Метод JSNI, чтобы JavaScript Метод определен. От твоего Страница хоста приложения вы бы тогда вызовите созданный метод JavaScript.

Смущен еще? Это на самом деле довольно простой.

Фрагмент кода ниже показывает пример этого (любезно предоставлено Робертом Hanson):

private native void initPlaylistJS  (PlaylistTable pl) /*-{   
   $wnd.addClipToPlaylist = function (clipId, clipTitle) {
        pl.@com.foo.bar.client.PlaylistTable::addClip(Ljava/lang/String;Ljava/lang/String;)(clipId, clipTitle);
    };
}-*/;

В этом примере вам необходимо сделать вызов initPlaylistJS (pl) в onModuleLoad вашего модуля GWT (). однажды Ваше приложение GWT загружается, Метод JavaScript определен и вызываемый снаружи GWT применение.

Что касается «багажа», GWT компилирует один монолитный файл, поэтому вам не нужно ничего включать.


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

0 голосов
/ 16 июля 2009

Если у вас уже есть функции, реализованные в javascript, имеет ли смысл что-то вроде Rhino , имеет ли смысл выполнять код Javascript внутри JVM на стороне сервера?

0 голосов
/ 15 июля 2009

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

...