4

バックボーン上に構築されたアプリケーションがあります。より複雑になってきているため、Marionette への移行を検討していますが、自分のビューをどのように構成すればよいかわかりません。

既存のアプリケーション ビューは、次のように構成されています。

BaseView = Backbone.View.extend({ ... }) 

BaseView はすべてのビューのルートです。基本的に、テンプレートのレンダリング、ページのローカリゼーション、アクティブなメニューの選択などの基本的な機能を備えたレンダリング機能があります。

ListView = BaseView.extend({ ... }) 

ここで、renderメソッドには、DataTables プラグインの読み込みと使用、edititem、additem、deleteitem などの共通イベントなど、すべてのリストの共通コードが含まれています。

FormView = BaseView.extend({ ... }) 

Backbone.ModelBinder プラグインを使用して一般的なフォームを管理し、フォームの検証を処理します。

私のすべてのアプリケーション ビューは、コードの再利用性を向上させるために、上記のいずれかから拡張されています。たとえば、アカウント情報を処理するための特定のロジック (数行のコード) しかない FormView から拡張された AccountFormView があります。すべての共通ロジックは、親ビューから継承されます。

Marionette Views を使用して同様のものを取得するにはどうすればよいですか?

ありがとう、ファブリツィオ

4

1 に答える 1

4

Marionette のビューは、最も一般的な状況を処理するように設定されており、これらの一般的な問題を解決するために定型コードをすべて削除しています。

  • ビュー: 他のビューを構築するために使用できる基本ビュー
  • ItemView: テンプレートを使用して単一のモデルをレンダリングする
  • CollectionView: 指定されたビューを使用して、コレクション内のすべてのモデルをレンダリングしますitemView
  • CompositeView: テンプレートをコレクション ビューのラッパーとしてレンダリングします。ネストされた/階層構造をサポート

あなたの状況では、特定のシナリオに応じて、これらのビューの種類を組み合わせて使用​​しているように聞こえます。ただし、単一のビューの種類から常に拡張するのではなく、現在のシナリオで最も理にかなっていて、そこから拡張します。

独自のカスタム機能をすべてのビューに追加する方法を探している場合、それも非常に簡単です。その機能をベースの Marionette.View または Backbone.View に追加するだけで、すべての Marionette ビューで使用できるようになります。

ドキュメントとコード (多数の小さなファイルに分割されているため、読みやすく、理解しやすい) を確認して、Marionete が提供するメソッドと、それが提供する拡張ポイントを確認してください。

それが役立つことを願っています。

于 2012-10-26T03:09:22.567 に答える