問題タブ [clientbundle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gwt - テンプレートのデータソースから画像をレンダリングする
ClientBundle に由来する画像をテンプレートでレンダリングしたいと考えています。しかし、私が代わりに得るのはこれです:
データソースの内容を確認しました。画像 (data:image/png;base64...) を {0} にコピーすると機能します。
パラメータとして渡すと機能しないのはなぜですか?
gwt - GWTImageResourceの背景位置
UIBinderを使用してGWTでホバー効果(a la this )を持つボタンとして単一の.pngを使用しようとしていますが、苦労しています。
これが私のui.xmlファイルです:
.pngをバンドルしてブラウザに表示することができます。ただし、:hoverCSSが期待どおりに機能していません。実際、ホバーすると画像の周囲に青い境界線が表示されるので、CSSが機能していることはわかりますが、画像は変更されません。
バンドルされた画像は、要素スタイル自体のようにbackground-positionプロパティをオーバーライドしているように見えます0 0
。これにより、クラスレベルのスタイルが無効になります。バンドルされたImageResourceのbackground-positionを設定しないようにGWTに指示する方法はありますか?それとも、これを完全に行うためのより良い方法はありますか?
ありがとう。
gwt - GWT ClientBundle キャッシングはどのように機能しますか?
GWT ClientBundle とキャッシングの使用をよりよく理解しようとしています。
たとえば、クライアントに提供したい大きなテキスト ファイルがある場合は、
これは、クライアントが最初にアプリを実行したときにファイル「myText.txt」がサーバーからダウンロードされ、その後ファイルがブラウザーのキャッシュに保存されるため、今後アプリを使用するときにファイルがダウンロードされないことを意味しますか?ダウンロードする必要がありますか?
その場合、「myText.txt」を変更するとどうなりますか?アプリは新しいバージョンを取得することを認識していますか?
最後に、ファイルが実際にキャッシュに保存されている場合、これは HTML5 のローカル ストレージとどう違うのでしょうか?
ありがとう。
gwt - プロジェクト フォルダー外の GWT ImageResource @source パス
私のプロジェクトでは、プロジェクトでClientBundle
使用される画像に を使用しています。私が使用するイメージは、他のgwt
プロジェクト以外のFlex
Web アプリケーションで既に使用されているため、これらのイメージはプロジェクト外の単一のディレクトリに配置されgwt
ます。
階層:
私の CImageResource クラスで:
そしてgwtは「リソースファイルがありません」と言います。
ClientBundle
クラスで画像を使用するにはどうすればよいですか? 可能な限り、アクセスする方法がある場合は、プロジェクト フォルダーで使用するイメージをコピーしたくありません。
gwt - ImageBundle によるスプライト合成のプロセスを逆にし、生成されたスプライトを画像スニペットに分割するツール
コンパイル中に作成されたファイルから個々の画像を生成するためのツールはありますか (おそらくGWT コンパイラ自体をスタンドアロン アプリとして使用できます)。*.cache.png
または、(スプライト ジオメトリの) マッピング情報は API 経由で利用できますか?
GWT リポジトリ、ドキュメント、StackOverflow に関する情報、およびおそらくこの件に関するすべての Google グループに関する情報を調べましたが、役に立ちませんでした。
動機
私の目的は、バンドルされたイメージのインライン化を回避するように GWT コンパイラに指示することにより (を使用して<set-property name="ClientBundle.enableInlining" value="false" />
)、Web アプリケーションをホワイトラベル化する簡単な手段を提供することです。したがって、WAR を構築してそれをに渡すよりも、すべてのユーザー エージェントでスプライト イメージの使用を強制します。圧縮された WAR 内の画像アセットのみを編集するグラフィック デザイナー (このようなツールを提供することで、グラフィック デザイナーの負担を少し軽減したいと考えています)。
デザイナーは提供されたツールを使用してスプライト イメージを分解および再構築し、編集を容易にします。
図
java - ClientBundle.enableInliningとClientBundle.enableRenaming?
最近、レバーとノブのセクションでこの記事を読みました。次の2つのエントリを参照してください。ClientBundle
- ClientBundle.enableInliningは、データの使用を無効にするために使用できる遅延バインディングプロパティです。そうでなければ、コンパイルされたJSへのリソースデータのインライン化をサポートするブラウザーのURLです。
- ClientBundle.enableRenamingは、厳密に名前が付けられたキャッシュファイルの使用を無効にする構成プロパティです。
私はこれらの動作を視覚化し、それらが何をするのかを理解するのに苦労しています。これらのプロパティはどこに設定しますか?なぜそれらを設定するのですか(つまり、「データの使用を無効にする」、または「厳密に名前が付けられたキャッシュファイルの使用を無効にする」のはいつですか)。誰かが実際のユースケースとおそらくいくつかのコードスニペットを私に提供できますか?前もって感謝します!
java - ClientBundles とリソース: それらは何で、なぜそれらを使用するのですか? 彼らはどのような問題を解決しますか?
私も GWT の初心者であり、s の公式ドキュメントClientBundle
をどれだけ読んでも、それらが何であるか、およびそれらが何をするかについて頭を包むことができないようです。CssResource
、DataResource
、TextResource
、GWTCreateResource
などについても同様です。
それらは、静的ファイル (CSS、JavaScript、または JSON ファイルのような静的データ ソースなど) の何らかのパフォーマンス最適化として存在すると思います。どうやら、それらは「注入可能」でもあり、静的な CSS/JS/JSON/etc であると想定されている場合、私には意味がありません。ファイル...
だから私は尋ねます:誰かが私にこれらのオブジェクトが何であるか、そしてそれらがどのように使用されているかについての現実的で簡単なキングズイングリッシュで簡単な説明をくれませんか? このインジェクションの動作例を大胆にお願いできますか (上記のリンクのコード スニペットはインジェクションについて述べていますが、実際にはそれを示していません!)。my-styles.css
これらは実際のファイル ( 、dataTable-static-data.json
など)にどのようにマップされますか? 実際、これが私の最大の精神的ハードルだと思います。これらの Java オブジェクトを、それらが表す静的ファイルに関連付けることです。
また、なぜバンドルするのですか?他のプロジェクト間での再利用性? たぶん、それが注射可能性の出番ですか?私は困惑している。
java - Locale と ClientBundle を使用した GWT マルチテナンシーのサポート
マルチテナンシー機能を既存の GWT アプリに導入しようとしています。要件は次のとおりです。
- 会社固有の CSS と画像を使用する
- テキストの変更が少ない
- 実際のアプリ ロジックに対するいくつかの変更
現在、私のアプリには、すべての画像と CSS を含む 1 つの ClientBundle があり、静的定数を介してアクセスされます。
私のテキストはすべて、GWT Messages Interfaceに解析される 1 つの大きな Java プロパティ ファイル内にあります。
私の考えは、テキストに別のロケールを設定し、URL パラメータを介してロケールを決定することです。会社によって異なる ClientBundles をロードする方法がまだわかりません。抽象的な ClientBundle を作成し、それを CompanyA および CompanyB ClientBundle に継承する必要がありますか?
私の主な質問は、これが良い解決策であるかどうか、または他のエレガントな方法があるかどうかです。
java - アプリケーションを高速にロードするために、1 つの画像で ImageResource を使用して多くの ClientBundle をバインドする GWT GIN
アプリケーションで GWT を使用しています。写真をキャッシュするには、ClientBundle と ImageResource を使用します。次のような多くの ClientBundles があります。
そして、次のような同じメソッドを持つ数百の ClientBundles:
その結果、「*.cache.png」のようなサーバーに何百もの写真があります。読み込みを高速化するには、必要な写真が少なくて済みます。この目的のために、私は決定を見つけました:
Ginjector もありますが、問題は次のとおりです。
ClientBundlePack1 の MenuBundle、NatureFuture、およびその他のクラスは 1 つの全体像にコンパイルされますが (これは良いことです)、House1、House2、House3 およびその他のハウスは 1 つの全体像にコンパイルされません (悪いことです)。
ハウスは、各クラスのハウスを 1 つの図にまとめます。実装を拡張するJavaの方法に問題があり、pic1のような同じメソッドを1つだけ使用する代わりに、すべてのメソッドpic1を使用します。
しかし、私はすべての家を 1 つの写真に参加させる必要があります。GINがそれを行うための設定、注釈があります。または、すべてのハウスに参加する他の方法はありますか? しかし、ハウスのコードを書き直すことはできません。アプリケーションのアーキテクチャが壊れてしまいます。「遅延読み込み」なしで、プリロード直後にすべての家が必要です。
ありがとう。
gwt - GWT、CssStyle が複数回注入される
私はかなり長い間 ClientBundle と CssResources を使用してきましたが、スタイルが何度も挿入されていることに気付きました。私が指摘できることの1つは、かなりの数を使用していることです<ui:with field='resources' type='com.vf.client.resources.Resources' />
私のテンプレートでは、これが私の clientBundle の複数のコピーを作成しているのではないかと疑っています。これを引き起こす可能性があることの 1 つは、ビューを clientfactory にキャッシュする Ray Ryan の概念を使用しているため、一部のビューが DOM にアタッチされる前に作成されることです。私の基本ビューでは、UiBinder が新しいリソースを生成しないように、リソースに provided=true を使用しています。ただし、これは機能しない可能性があります。私は疑っていますが、ui:with は新しいコピーを作成し、提供された = true を無視しています。Chrome と Firebug の開発者ツールを使用して確認しましたが、どちらの場合もスタイルが何度も挿入されています。すべての UiBinder テンプレートから Resources クラスを削除せずにこの問題を解決する方法さえわからないため、かなりの作業が必要になります。どんなアイデアでも大歓迎です。
アップデート
ファクトリー/シングルトンを使用して、1つだけを作成するようにしています。アプリケーションの起動時に、ClientFactory 実装でこの Resources ClientBundle を作成します。アプリケーションの開始時に、スタイルで ensureEnjected を呼び出します。それ以降、コードで ensureInjected が呼び出されることはありません。
これは、singleon リクエスト ファクトリを取得するだけのファクトリです。以前はインターフェイス内に静的イニシャライザを使用していましたが、複数のスタイルの問題を解決するためにしばらく前にこれに移行しました。
私のクライアント バンドルは、ここでのみ初期化され、挿入されます。