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

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

  • ModuleA (только общие виджеты)
  • Module1 (остальная часть app1 наследуется от ModuleA).
  • Module2 (остальная часть app2 наследуется от ModuleA).

Могу ли я скомпилировать Module2 без перекомпиляции ModuleA каждый раз, когда создается новое приложение?

Я также использовал superDevMode и все оптимизации компиляции, но это стало принципиальным вопросом :)

Меня не волнуют оптимизации GWT.

Спасибо


person TeamBanana    schedule 19.04.2013    source источник
comment
Насколько я знаю, вы не можете этого сделать. Вы должны компилировать весь проект (включая ваши общие виджеты) каждый раз, когда вы компилируете. GWT заставляет вас делать это, потому что в противном случае он не смог бы выполнять все оптимизации, в которых GWT так хорош.   -  person enrybo    schedule 19.04.2013


Ответы (1)


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

И даже используя jsni, вы не можете передавать объекты между модулями, кроме типов primitive и Overlay.

Лучшее решение, которое я вижу, это то, что вы можете экспортировать виджеты из ModuleA в javascript, используя gwt-exporter это руководство, которое я написал некоторое время назад, может вам помочь.

Но после экспорта вашего ModuleA в качестве API javascript вам нужно обернуть этот API с помощью jsni в GWT, чтобы вызывать его из ModuleB и ModuleC.

ИМХО, это не стоит времени, которое вы могли бы сэкономить при компиляции вашего ModuleB, когда вы исключаете свой ModuleA.

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

person Manolo Carrasco Moñino    schedule 19.04.2013
comment
Как вы думаете, может ли gwt-exporter быть хорошим решением, позволяющим моим клиентам расширять созданное мной приложение gwt? - person TeamBanana; 19.04.2013
comment
конечно!, он предназначен для этого - person Manolo Carrasco Moñino; 19.04.2013