1

基本的に、PanelA オブジェクトをロードする単一の HTML ページを持つ GWT UI を作成したいと考えています。その後、ユーザーは自分のことを行い、最終的に別のビュー/画面に移動するアクションを実行します。
ユーザーを次のページに移動させるボタンを 1 つだけ含めるように、既存のビューを簡素化しました。簡単にするために、開始するビューは 2 つだけです。これが私のスタートアップのエントリーポイントです。

public class StockWatcher implements EntryPoint 

{
    public void onModuleLoad()
    {
        final RootPanel rootPanel = RootPanel.get();
        rootPanel.add( PanelA.getInstance() );
    }
}

ここに PanelA クラスがあります

    public class PanelA extends HTMLPanel
    {
        private static PanelA panel;            
        private PanelA()
        {
            super("Panel A");
            final RootPanel rootPanel = RootPanel.get();

            Button btnNewButton = new Button("Go to panel B");
            btnNewButton.addClickHandler(new ClickHandler() {
                public void onClick(ClickEvent event) 
                {
                    rootPanel.clear();
                    rootPanel.add( PanelB.getInstance() );
                }
            });

            add(btnNewButton);
        }

        public static PanelA getInstance()
        {
            if (panel == null)
            {
                panel = new PanelA();
            }
            return panel;
        }
    }

他の PanelB クラスは PanelA とほぼ同じです。つまり、 PanelA に戻るボタンです。私の UI は希望どおりに動作します。私の質問は、このシングルトン型パターンはこれを行うための正しいまたは適切な方法ですか? つまり、メイン パネルのオン/オフにポップされるシングルトン UI ビューのスタックがありますか? また、GWT アプリを介して履歴/ブレッドクラム トレースを処理する最善の方法は何ですか。つまり、PanelA、PanelB、または PanelC のいずれかから PanelX に移動できることを念頭に置いて、ユーザーが前の画面に戻ることができるようにします。

4

3 に答える 3

3

私は「Activities and Places」を使用してこれらすべてを管理していますが、1 年ほどの間、本番環境で非常にうまく機能しています。

https://developers.google.com/web-toolkit/doc/latest/DevGuideMvpActivitiesAndPlaces

ビューに Singleton メカニズムを使用しても問題ないと思いますが、保存した状態を完全にリセットする必要があります。私にとっては、ユーザーが新しい場所に移動するたびに新しいビューを作成する方が簡単でした。読み込み時間などの問題を検出した場合は、遡及的にビューがそのコンポーネントを再利用するようにします。最初にナビゲーションを機能させてから、シングルトン (またはそうでない) の最適化について心配することをお勧めします。

于 2012-12-26T23:16:07.470 に答える
1

アクティビティと場所のデザイン パターンをお勧めします。

質問で提起されたすべての問題に加えて、ネイティブ ブラウザの履歴管理、アプリ内のさまざまな場所をブックマークする機能、ページのリロードの処理、効率的な処理など、まだ考えていない (または質問していない) その他の多くの問題をカバーしています。メモリ管理と最適化された DOM 操作、スケーラビリティ (コードの重複を最小限に抑えて数十または数百のビューを持つアプリを構築する)、テスト容易性、およびコード分割 (大きなアプリを分割する場所)。

于 2012-12-26T23:52:13.893 に答える
0

GWTP」フレームワークを参照して、現在 GWTP でサポートされている機能の一部である GWT プロジェクトを作成することをお勧めします。

  • GIN と Guice による依存性注入。
  • シンプルだが強力な履歴管理メカニズム。
  • ネストされたプレゼンターのサポート。
  • プレゼンターとビューの遅延インスタンス化。
  • 簡単で効率的なコード分割。
  • 元に戻す/やり直しをサポートする統合コマンド パターン。

したがって、Singleton UI ビュー、history/breadcrumb trace および singleton type pattern を処理するための最良の方法などの質問とクエリがカバーされ、1 つの優れたフレームワークがプロジェクト管理を容易にします。

于 2012-12-27T04:58:43.677 に答える