16

いくつかの JavaScript ファイル、メインの HTML ファイル、メインの CSS ファイル、およびメインのファイルにインポートされるいくつかの CSS ファイルがあります。

静的ファイルを次の 2 つの場所に配置できることを理解しています。a) 'war' フォルダー。または b) 'public' フォルダー。

静的ファイルを配置するのに最適な場所はどこですか? 2 つの場所の扱いは異なりますか? この問題に関する「ベストプラクティス」はありますか?

4

3 に答える 3

19

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' フォルダーに格納する必要があります。

于 2009-10-01T13:50:44.637 に答える
7

GWT での新しい作業方法は、war フォルダーを使用することです。

ただし、プロジェクトが GWT アプリケーションで使用される再利用可能なウィジェット ライブラリである場合は、リソースを public フォルダーに配置する必要があります。コンパイラは、生成されたパッケージにファイルが自動的に含まれるようにします。

于 2009-10-01T06:44:52.583 に答える
4

私が見ているように、それはあなたの要件に依存しますが、最初に話す例から始めましょう...

これに関するドキュメント(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 に依存しているようです。

  • Ra)これらのリソース (画像など) は、アプリケーション コードで参照されます。たとえば、注釈AppClientBundleを介してインターフェイスで参照されます。@Source
  • Rb)これらのリソースはフォルダーごとにグループ化されfoo2.pngます。img/foo1.png
  • Rc)これらのリソースは、特定のアプリケーション URL コンテキスト パスの外部で使用できるようにする必要がありますhttp://host1/gwtapp1/foo4.pnghttp://host1/gwtapp2/foo4.png
  • Rd)これらのリソースは、アプリケーションに依存しない (外部など) URL 参照である必要がありますhttp://host1/gwtapp1/foo4.pnghttp://host1/foo6.png

これができること(可能性)であり、 Rに関する意味です。 *上記:

  • P.1) (私が見た限りでは一般的に推奨されています) 適切なフォルダー構造のリソースを下my.gwtproj.clientに置きます(ここでは例foo1.png)
    • この方法@Source("img/foo1.png")...はうまくいきます
    • 上記のドキュメントでは、いくつかのpublicフォルダー(私の場合my.gwtproj.public) について話していますが、Eclipse でパッケージとして作成することはできません (public予約済みの Java キーワードであるため、ビューを介して作成することはNavigatorできます) 。
      • ただし、この方法では@Source上記は機能しません (AppClientBundleファイル システムの相対的な場所に問題があるためと考えられます) 。
      • それにもかかわらず、アプリケーションのコンテキストでリソースを公開する必要がある場合は、このpublicフォルダーを介して実行する必要がある場合があります
  • P.2) 「グループ化されていない」リソースを の直下にmyproj/war置きます。projdir/war/foo6.png
    • このようにして、注釈内で使用/検索できます。@Source
    • アプリケーション自体の外部で参照することもできます。http://host1/foo6.png
  • P.3)フォルダー構造のリソースを の下myproj/warに置きます。projdir/war/img/foo5.png
    • P.2とは対照的に)@Source("img/foo5.png")もう機能しません
于 2014-03-25T10:30:49.113 に答える