JavaScriptのパッシブビュー
-
18-09-2020 - |
質問
JavaScriptのMVP - パッシブビューパターンの実装について考えています。ほとんどの場合、ビューは発表者がイベントリスナーを添付する単純なDOM要素になります。しかし、JavaScriptベースの疑似選択ボックス、自動提案またはARIA機能のようなウィジェットに関しては、これがJavaScriptビュークラスの一部であるか、またはビューを変更するロジックは発表者の一部になるべきですか? 私は javascriptmvcs に見えず、それはテンプレート生成されたHTMLのみであるようです。どんな論理です。しかし、私にとっては、HTML SelectBoxへのListentをリスニングするプレゼンターとJavaScriptロジックを使用して疑似SelectBoxをリキュリングして、実際の選択ボックスを模倣するものとは異なります。どちらも箱が内部的に機能している方法を気にしないでください、彼らはただ変更イベントを聞く必要があります。
だからあなたはどう思います。Viewクラスのジョブをいただきました。
解決
ビューの仕事は、ビュー技術のです。この場合、ViewテクノロジはJavaScriptを介してHTML上のjQueryです。ビューは3つのことをするように設計されるべきです:
- イベントが発生し、これらのイベントを発表者に伝えます(これは間接的に、 postal.js )
- プレゼンターに(尋ねたとき) " x の値は何ですか。ここで、 x はビューで表される値です。
- プレゼンターからのメッセージを(通常は直接メソッド呼び出しを通じて)を受け入れてビューの値を変更します。
パッシブビューパターンのビューはステートフルではありません。繰り返し、ビューは状態を表していません。これが意味するのは、状態遷移のすべての状態と知識が発表者によって表されていることです。ビューは、プレゼンターと実際のビュー技術との間の間接を提供する接着剤です。 上記の3つの箇条書きを超えて、それが含まれている情報と関係のある知識はに含まれていません。これは重要なので、ビューが一貫した状態にあることを期待しないでください。常にビューの状態を管理する責任者を常に保持する必要があります。
上記のスタックは、モデル、ビュー、およびプレゼンターが対話する方法、ビュー技術とコントローラとの関係を予測する方法を示しています。
- ブラウザ、HTML、DOM(jQueryから管理)はビューテクノロジです。これらは本質的に複雑で、あなたのモデルを表すことができない。
- View は、 View Technology からあなたの論理を保護します。 Presenter の普通の古いコードに集中できるように、間接的なものを提供します。 View は、発表者に返信するためにある種のメッセージングを使用する必要があります。これにより、ビューと発表者との間の双方向依存性が防止されます。また、複数の発表者がビューを操作することもできます。
- Presenter は、ビューの抽象的な性質を理解する責任を負うべきであり、そのビューへのインタフェースに基づいて Model の状態を管理する必要があります。続行者からモデルを検索する方法、およびモデルをサーバーに保持する方法を理解することができます。
- モデルは、のの状態の表現です。 Controller と Presenter の間のDTOとしても機能することもできます。 JavaScriptでは、モデルにプレゼンターの行動を追加するだけで簡単で好ましいです。
- コントローラはアプリケーション内のナビゲーションを調整し、プレゼンテーションからバックエンドサービスを抽象化する責任があります。
他のヒント
ビューオブジェクトは自分自身を描画する責任があるはずです。パッシブビューは を、 をやることではありません。それはそれ自身のイベントを発射する責任がなければなりません。カスタム選択ボックスウィジェットであるという理由だけで、通常の選択ボックスとは異なるものはありません。
プレゼンターがすべてのビューの責任を回避した場合は、全くビューが必要ありません。プレゼンターのみを持っているだけでなく、
JavaScriptMVCのビューはダミークライアント側のテンプレートです。それはノードコントローラがより伝統的なビューの役割を引き受ける傾向があります。