GWT отдельные модули без совместного использования кода - PullRequest
2 голосов
/ 26 мая 2010

Я должен сделать веб-приложение, используя GWT. Проект имеет основной модуль, который будет предоставлять набор apis для использования другими приложениями; Каждое из этих приложений не связано. Каждый должен быть загружен в отдельный фрейм.

Моя идея состояла в том, чтобы собрать ядро ​​в core.js, и у каждого приложения должен быть свой собственный app1.js app2.js и т. Д.

App1

script type="text/javascript" src="core.js" ></script>
script type="text/javascript" src="app1.js" ></script>

с этим дизайном из-за кэширования браузера каждое приложение загружает только app.js, размер которого должен быть меньше ~ 20 КБ.

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

Может кто-нибудь предложить способ обойти эту проблему? Я проверил подобные вопросы на SO, но не смог найти простой рабочий ответ на проблему.

1 Ответ

4 голосов
/ 26 мая 2010

Это не может быть сделано.

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

Из-за того, как работает GWT, всегда будет неэффективно включать несколько модулей GWT на одну страницу.

Вместо этого вот что я бы порекомендовал -

  1. Иметь один модуль GWT на приложение, а не один на страницу. И помещать два модуля на одной странице определенно не правильно
  2. Обмен Java-кодом между модулями, а не Javascript. Это означает, что ваша общая библиотека никогда не будет скомпилирована как javascript
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...