Понимание того, как Ваадин использует GWT - PullRequest
9 голосов
/ 19 августа 2011

Проиграв с Ваадином около недели, мне интересно, как Ваадин использует GWT. GWT компилирует Javacode в Javascript. Это нужно делать каждый раз, когда вы передислоцируете.

Поскольку Vaadin следует понимать как серверно-ориентированную среду, исключающую гибкость при написании кода, выполняемого на стороне клиента, и перемещении всего на сервер (что звучит хуже, чем есть на самом деле), компилятор GWT запускается только один раз. время. Например, это происходит при импорте плагина с веб-сайта vaadin.

Но это не может быть так просто, верно? Если бы он только компилировал код плагинов в javascript, это можно было бы сделать раньше.

Итак, мой вопрос:

Когда VAADIN использует компилятор GWT и что он делает в этот момент, кроме компиляции в js?

1 Ответ

14 голосов
/ 19 августа 2011

В принципе, вы все правильно поняли и в основном сами ответили на вопрос.

В Vaadin компоненты пользовательского интерфейса состоят из двух частей:

  1. Серверный "компонент", скомпилированный с использованием JDK
  2. Клиентский "виджет", скомпилированный с использованием GWT

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

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

Как правило, новые компоненты для Vaadin могут быть разработаны двумя способами:

  1. Составление существующих компонентов
  2. Создание новых виджетов с GWT / JavaScript (+ другие технологии на стороне клиента)

Первый метод здесь использует существующие классы и не нуждается в перекомпиляции виджетов с GWT. Компилируется только код приложения (с JDK-компилятором). Однако во втором сценарии классы на стороне клиента изменяются и требуют перекомпиляции. Это когда GWT-компилятор необходим.

Из-за довольно монолитной природы JavaScript, скомпилированного GWT (независимо от новых функций разделения кода в GWT, пространство имен является глобальным), Ваадин использует концепцию набора виджетов . Это модуль GWT, который содержит все виджеты, необходимые в приложении. Это означает, что для добавления новых (клиентских) виджетов в приложение необходима перекомпиляция GWT. Рекомендуется также перекомпилировать набор виджетов при удалении виджетов для оптимизации размера набора виджетов.

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

Все это хорошо видно при использовании надстроек Vaadin (см. http://vaadin.com/directory). Даже надстройки - это просто jar-файлы, если они содержат новый код виджета на стороне клиента, необходима компиляция набора виджетов с использованием GWT , когда они добавляются в проект.

...