2

私が正しく理解していれば:

  • アクティビティは、ウィジェットに対するユーザー アクションです
  • このアクティビティは、アプリケーションの状態を別の場所に移動します
  • アンカーのおかげで、URL が移動します (最新のブラウザーには API があると考えられます)。
  • URL を共有すると、Place が定義され、State を再構築するのに十分です

(私も JavaScript 派なので、これは Backbone のルーターや他の最新の JSFrameworks によく似ています)

しかし、 State を再構築するには、いくつかのデータをServerにフェッチする必要があります。これを行う P&A API には何かありますか? RPC では、この役割は RemoteServlet を拡張する GreetingServiceImpl によって明確に行われます。Backbone には Sync オブジェクトがあります。

しかし、A&P チュートリアルを見ても、そのようなコードは見当たりません。サーバーはどこですか?そこにRPCが必要ですか?RequestFactory と混在していますか?

4

2 に答える 2

4

最初に、用語についての小さなメモ:

場所は、アプリ内の場所を表します。その画面を見ると、通常、それぞれが特定のアクティビティ専用のさまざまな「ブロック」で構成されています。たとえば、ヘッダー(検索ボックスとログアウトリンクがあるとしましょう)、ナビゲーションメニュー、マスターの「マスター」などです。詳細ビュー、マスター/詳細ビューの「詳細」。これらはすべてアクティビティになる可能性があります(必ずしもそうである必要はありませんが、他のものに決して交換されないものは、アクティビティとして何も得られません)。

アクティビティは定義上、画面に表示されるため、それらを操作して、別の場所への移動をトリガーすることができます ( PlaceController#goTo)。

場所はオプションで URL と (双方向で)同期され、ブラウザーの履歴項目が生成されます。デフォルトではhashを使用しますが、実装を交換して HTML5 を使用することができます。

(場所はタイプチェックされていることを除いてバックボーンのルーターに似ています。アクティビティは上のライトレイヤーであり、バックボーン AFAICT には同等のものはありません)


今あなたの質問に答えるために:

GWT はツールキットであり、フレームワークではありません。つまり、ほとんどのビルディング ブロックは他のビルディング ブロックの使用を強制するものではありません (場所はアクティビティがなくても機能し、エディターはウィジェットがなくても機能します)。

アクティビティは非同期で開始されます。これは、通常、どこからでもデータを取得する場所です。ツールキットの精神に則り、ニーズに合ったものを自由に使用できます: GWT-RPC、RequestFactory、RequestBuilder、Errai JAX-RS、Errai Bus、XMLHttpRequest、WebSockets、AppEngine Channels など。イベント バスを使用して、データの取得方法からアクティビティを分離します。

于 2013-08-29T23:16:15.313 に答える
0

MVP は、クライアント アーキテクチャについて説明します。

M_odel : アプリで処理されるビジネス オブジェクト。

V_iew : モデルの表現を示す UI 要素。

P_resenter : すべてのユーザー インタラクションとモデルの変更を処理するクラス。


メモを表示および保存するアプリケーションがあるとします。

いくつかの場所があります:

  • プレイスは、昔の古き良き HTML ページのようなものです。そのMVP中にランニングのセットを記述できますPresenter。この単純なアプリケーションには、2 つの場所があります。すべてPlaceに 1 つしか実行されていませんPresenter

NotesListPlace-> 保存されているすべてのメモを表示

NotesEditPlace-> メモの作成/編集

NotesEditPlace:

ビューとプレゼンターがあります。ビューには、TextArea (メモ用) と保存ボタンがあります。プレゼンターには保存ボタン用の clickHandler があります (他にもあるかもしれませんが、例としてはそれで十分です)

ユーザーは NoteList からメモを選択します

PlaceChangeからNoteListPlace->NoteEditPlace

Presenter、ビューでクリック ハンドラーを開始して登録します。ボタンが押されると、プレゼンターはテキストエリアから入力を読み取り、モデルを更新します (新しい Notes-onject)。

次にサーバーとのやり取りです。必要なすべての (GWT) トランスポート層を使用できます。

成功のコールバックは、 に対してPlaceChangeイベントを発生させNoteListPlaceます。

すべてが再び始まります。プレゼンターが起動し、新しいサーバー インタラクションがモデル (ノートのリスト) をロードします。ビューは発表者によって更新されます...

更新 1 サーバーは必要ありません。プレゼンターは、Model をブラウザーの localStorage に永続化できます。

更新 2 必要なすべてのトランスポート メカニズムを使用できます。RequestFactory、GWT-RPC。私は RequestBuilder と GWT AutoBeans を使用しています。

于 2013-08-29T21:28:07.403 に答える