いくつかの JavaScript ファイル、メインの HTML ファイル、メインの CSS ファイル、およびメインのファイルにインポートされるいくつかの CSS ファイルがあります。
静的ファイルを次の 2 つの場所に配置できることを理解しています。a) 'war' フォルダー。または b) 'public' フォルダー。
静的ファイルを配置するのに最適な場所はどこですか? 2 つの場所の扱いは異なりますか? この問題に関する「ベストプラクティス」はありますか?
いくつかの JavaScript ファイル、メインの HTML ファイル、メインの CSS ファイル、およびメインのファイルにインポートされるいくつかの CSS ファイルがあります。
静的ファイルを次の 2 つの場所に配置できることを理解しています。a) 'war' フォルダー。または b) 'public' フォルダー。
静的ファイルを配置するのに最適な場所はどこですか? 2 つの場所の扱いは異なりますか? この問題に関する「ベストプラクティス」はありますか?
2 つの場所の違いは、パブリック フォルダー内のファイルが gwt コンパイラーによって「war」フォルダー内の「your module」フォルダーにコピーされることです。これは、'war' を (たとえば、google プラグインを介して google appengine に) デプロイする場合、'public' フォルダのファイルがトップレベルにないことを意味します。
たとえば、'mymodule' という名前の gwt モジュールを含む 'public' フォルダーに index.html があり、それを www.example.com にデプロイする場合、次のようになります。次の方法でアクセスする必要があります。
www.example.com/mymodule/index.html
「war」フォルダーに index.html がある場合は、次のようになります。
www.example.com/index.html
要約します。ランディング ページは「war」フォルダにある必要があります。ランディング ページで使用されるリソース ファイルもここに保存できます (css、画像)。gwt モジュール ファイル (または画像などのコード) で参照されるその他のリソース ファイルは、gwt モジュールに関連する 'public' フォルダーに格納する必要があります。
GWT での新しい作業方法は、war フォルダーを使用することです。
ただし、プロジェクトが GWT アプリケーションで使用される再利用可能なウィジェット ライブラリである場合は、リソースを public フォルダーに配置する必要があります。コンパイラは、生成されたパッケージにファイルが自動的に含まれるようにします。
私が見ているように、それはあなたの要件に依存しますが、最初に話す例から始めましょう...
これに関するドキュメント(GWT 2.6.0 である必要があります) が正しくないか、少なくとも不完全/混乱していると思います。私が見ているように (私は第一人者ではないので、私の調査が間違っている場合は修正してください! ) 私は次のプロジェクト構造の例を見ています
myproj/
src/my/gwtproj/
client/
img/
foo1.png
AppClientBundle.java
foo2.png
public/
img/
foo3.png
foo4.png
war/
img/foo5.png
foo6.png
.classpath
.project
AppClientBundle
いくつかのインターフェース (または他のアプリケーション参照コンテキスト)でそのようなリソースを参照する必要がある (または必要ない) と想像してください。
interfaces AppClientBundle extends ClientBundle {
@Source("img/foo1.png")
ImageResource fooImg();
}
次に、あなたの Requirements に依存しているようです。
AppClientBundle
を介してインターフェイスで参照されます。@Source
foo2.png
ます。img/foo1.png
http://host1/gwtapp1/foo4.png
。http://host1/gwtapp2/foo4.png
http://host1/gwtapp1/foo4.png
。http://host1/foo6.png
これができること(可能性)であり、 Rに関する意味です。 *上記:
my.gwtproj.client
に置きます(ここでは例foo1.png
)
@Source("img/foo1.png")...
はうまくいきますpublic
フォルダー(私の場合my.gwtproj.public
) について話していますが、Eclipse でパッケージとして作成することはできません (public
予約済みの Java キーワードであるため、ビューを介して作成することはNavigator
できます)
。@Source
上記は機能しません (AppClientBundle
ファイル システムの相対的な場所に問題があるためと考えられます) 。public
フォルダーを介して実行する必要がある場合がありますmyproj/war
置きます。projdir/war/foo6.png
@Source
http://host1/foo6.png
myproj/war
に置きます。projdir/war/img/foo5.png
@Source("img/foo5.png")
もう機能しません