9

Vaadin で約 1 週間遊んだ後、Vaadin が GWT をどのように使用しているかに興味があります。GWT は Javacode を Javascript にコンパイルします。これは、再デプロイするたびに行う必要があります。

Vaadin はサーバー中心のフレームワークであると理解する必要があり、クライアント側で実行されるコードを記述し、すべてをサーバーに移動するという柔軟性が失われるため (これは実際よりも悪いことのように聞こえます)、GWT コンパイラーは 1 度に 1 回しか実行されません。たとえば、これは vaadin Web サイトからプラグインをインポートするときに発生します。

でもそう簡単にはいきませんよね?プラグインのコードを JavaScript にコンパイルするだけであれば、これは以前に実行できたはずです。

だから、私の質問は:

VAADIN はいつ GWT コンパイラを使用し、その時点で js へのコンパイル以外に何をしますか?

4

1 に答える 1

14

基本的にあなたはそれを正しく持っており、ほとんど自分で質問に答えました。

Vaadinでは、ユーザーインターフェイスコンポーネントは次の2つの部分で構成されています。

  1. JDKを使用してコンパイルされたサーバー側の「コンポーネント」
  2. GWTを使用してコンパイルされたクライアント側の「ウィジェット」

これらの部分はHTTPを介して相互に通信し、必要に応じてそれらの状態を自動的に同期します。サーバー側の部分はユーザーインターフェイスコンポーネントの状態を維持し、クライアント側のウィジェットはその状態をレンダリングします。

アプリケーション開発者は通常、サーバー側のコンポーネントを使用してアプリケーションを構築するだけであり、クライアント側がどのように機能するかを実際に気にする必要はありません。

一般に、Vaadinの新しいコンポーネントは、次の2つの方法で開発できます。

  1. 既存のコンポーネントを構成する
  2. GWT / JavaScriptを使用した新しいウィジェットの作成(およびその他のクライアント側の技術)

ここでの最初のメソッドは既存のクラスを使用し、GWTを使用してウィジェットを再コンパイルする必要はありません。アプリケーションコードのみがコンパイルされます(JDKコンパイラを使用)。ただし、2番目のシナリオでは、クライアント側のクラスが変更され、再コンパイルが必要になります。これは、GWTコンパイラが必要な場合です。

GWTでコンパイルされたJavaScriptのモノリシックな性質により(GWTの新しいコード分割機能に関係なく、名前空間はグローバルです)、Vaadinはウィジェットセットの概念を使用します。これは、アプリケーションに必要なすべてのウィジェットを含むGWTモジュールです。つまり、新しい(クライアント側の)ウィジェットをアプリケーションに追加するには、GWTの再コンパイルが必要です。ウィジェットを削除するときにウィジェットセットを再コンパイルして、ウィジェットセットのサイズを最適化することもお勧めします。

GWTのコンパイル手順自体は特別なことではありません。ただし、Vaadin自体には、ウィジェットによって適用および使用されるGWTクラスへの多くの追加、ヘルパー、および回避策が含まれています。

Vaadinアドオンを使用すると、これはすべてはっきりとわかります(http://vaadin.com/directoryを参照)。アドオンも単なるjarファイルであり、新しいクライアント側のウィジェットコードが含まれている場合は、プロジェクトに追加するときにGWTを使用したウィジェットセットのコンパイルが必要です。

于 2011-08-19T18:57:27.750 に答える