2012-03-20 15 views
5

私は、外部CSS開発者がサイトのルックアンドフィールをデザインする際にアプリケーションを開発する際のベストプラクティスを考えていますか?GWTとCSS開発のベストプラクティス

理想的には、複数の反復でサイトに簡単に統合できるCSSファイルを作成することになり、開発チームはこれらのファイルを操作する必要はありません(HTMLまたはテンプレートの変更があります適切なクラス)。ホストHTMLページ内のタグを使用して

  1. GWTのドキュメントは、(http://code.google.com/webtoolkit/doc/latest/DevGuideUiCss.html)の4つのアプローチを示しています。

  2. モジュールXMLファイルの要素を使用します。
  3. ClientBundleに含まれるCssResourceの使用。
  4. UiBinderテンプレートでのインライン要素の使用。

ドキュメントでは、最新のアプリケーションではアプローチ3,4を使用する傾向がありますが、CssResourceインターフェイスをCSSの各繰り返しで常に更新する必要はないため、開発プロセスの妨げに思えますアプローチ3)、CSSファイルをチュートして分割してui.xmlファイルにインライン展開する必要があります(アプローチ4)。

アプローチ2を使用し、CSSクラスを手作業でコーディングすることを考えています。これにより、CSSファイルのアップデートを簡単に削除することができ、開発者がそれらに触れる必要はありません。私たちは難読化を失い、CSS名の変更を管理するいくつかの作業がありますが、それ以外のアプローチはありません。他に何か不足していることはありますか?

外部CSSデザイナーが関わっているGWTアプリケーションを構築するためのベストプラクティスはありますか?

答えて

5

HTML/CSS/JS & GWT/Javaの両方に精通していないチームがいる場合は問題があります。あなたが努力する必要があるロックスタートがあるとしましょう。そして、次のCSS GWTの利益を取得したい:

  • んが、文字列リテラルのクラス名が
  • ないCSS名前空間の衝突/汚染
  • CSSクラスの最小化(セレクタとプロパティを圧縮)
  • コンパイラの最適化を参照していませんCSSルールの使用(同様のルールの組み合わせ)、未使用ルールの除外
  • CSSの有効性とクラスの欠落のコンパイラ時間チェック
  • 外部CSSファイルのヒープなし
  • リモートモードでDevModeからを実行しているとき
  • んが問題

は私がそうするための最良の方法を見つけるUiBinderサンプルメッセージ&そのためのJavaクラスである(それ以外のブラウザでは、リモートCSS、ない新しいあなたが取り組んでいるCSSを引き出していません) UiBinder、すべて1か所で。下記の例を参照してください。これは、私の経験では、最も堅牢で、圧縮された、最も速く、信頼性の高いアプリケーションを可能にし、追加のファイルを追加しません。

すべてが一つの場所にあります。それは、彼らが使用しているJavaファイルで定義され

  • CSSインタフェースを使用していますUiBinderサンプルメッセージ、で定義された

    • CSS

    ウィジェット

    class MyClass extends Widget { 
        ... // jave UI binder class 
    
        public interface MyStyle extends CSSBundle { 
         String someClassName(); 
        } 
    
        @UiField 
        MyStyle style; 
    
        ... 
        something.setClassName(style.someClassName()); 
        ... 
    } 
    

    iiBinder

    <!-- UiBinder File --> 
    <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'> 
    
        <ui:style type='com.my.app.MyFoo.MyStyle'> 
         .someClassName { background-color:pink; } 
        </ui:style> 
    
        <div class='{style.someClassName}'>Sample text.</div> 
    
    </ui:UiBinder> 
    

    私はこの質問を以前に聞いたことがあります。hereをチェックしてください。

  • +1

    回答とコードの例と他の質問へのリンクをありがとう、自分のプロジェクトがうまくいっていることを祈っています。私は以下の別の返答で述べたように、私はこのプロジェクトの段階で、UI/CSSとGWT/Javaの両方でチームメンバーの経験と慣れ親しんだレベルで、より簡単なアプローチの1つを検討します後でCSS出力をスライスしてUiBinderまたはCssResourceを使用して変換することができます。 – Numbat

    2

    4つの異なるアプローチが異なる状況でうまく機能するので、ここでは「ベストプラクティス」を持つことは非常に難しいです。どのようにGWTを使用するかによって、最適な使用方法が決まります。

    チームがA)Javaのみ、B)CSS/HTMLのみで構成されている場合、オプション1または2が有効です。しかし、GWTとCSS/HTML/XML(UiBinderを読んでください)の統合ポイントを理解しているUXの役割があれば。この人は、Javaのみの役割を最大限に引き出すために、UiBinderを最適な状態に設定する方法を理解するかもしれません。

    UiBinder + ClientBundleは、複雑な複雑さをプロジェクトに追加します。これには多くの利点がありますが、あなたのチームが適切ではない場合、あなたはあまりにも多くの害を引き起こす可能性があります。

    「ベストプラクティス」には、アプリケーションの一貫性を維持しながら、同時にUiBinderでのスタイル設定を使用するように構成された、メインのCSSファイル(ClientBundleまたはオプション1または2経由で使用される)を整理することが含まれます。地元のもの

    あなたはすべてを外出したい場合、私はあなたが最大にUiBinderサンプルメッセージとCssResource/ClientBundleを使用することに焦点を当てるべきだと思う(外部宣言CssResource/ClientBundelのものだけでなく、

    使用を経由してUiBinderサンプルメッセージのスタイルにプログラムでアクセスを与えます再利用のための外部のもの+一貫性の追加

    +1

    Ashtonさん、プロジェクトのこの段階で、速い反復で物事を流動的に保つために(また、開発者とCSSの両方の人に少しでも息を吐き、両方の分野で熟練を交わすことができるように)アプローチ2と一緒に行くことができますが、後日CssResourceに切り替えるためにCSSでドアを開いたままにしておきます。 – Numbat

    関連する問題