0

ウィジェットを機能で装飾する必要がある場合 (いくつかの異なるウィジェットで必要になる場合があります)、私は mixin アプローチに移行しています。

たとえば、ウィジェットのカスタム ライブラリの場合、いくつかの mixin が次のようになっていることがわかります。多くの異なるウィジェットにまたがるドメイン固有の状況のた​​めに特定の css クラスを追加するなど)

ウィジェットに mixin を平手打ちするだけのアイデアが好きです。これは、mixin を実行しているウィジェットのウィジェット ライフサイクルに従って関数とプロパティを追加するだけのように思えます。

いくつかの質問: - この mixin のアイデアを使いすぎていませんか? - ミックスインが同じウィジェットに複数回適用されるのをどのように防止しますか (拡張しているモジュールに既にミックスインがある場合など)。- mixin は状態を保持する必要がありますか? - mixin の機能をどのように公開する必要がありますか? ウィジェットがオーバーライドする必要がある機能を提供することによって? それともよりパブ/サブのアプローチですか?

Dojo mixin に関する一般的なアドバイスを本当に探しています。

4

1 に答える 1

0

ミックスインの使用方法については、あなたが正しいと思います。ミックスインは、小さく、移植可能で、他のオブジェクトの動作に対する特定の調整を目的としています。

ミックスインの冪等性の組み込みメカニズムはありません。自分で管理する必要があります。私はその場でクラスを宣言する傾向があり、ミックスインは使用直前に行われるため、現場でこのような状況に遭遇したことはありません。たとえば、テーマに mixin を使用している場合、テーマを設定できる各クラスではなく、最上位の「インターフェイス」(すべてのウィジェットをまとめて接着する責任がある) でそれを行います。

ミックスインは状態を保持できます。たとえば、dijit/form/_FormWidgetMixin.js を参照してください。

mixin の機能をどのように公開する必要がありますか? まあ、これは全体的な設計に依存し、正しい方法はないと思います。私のミックスインは通常、基本クラスの API を透過的に拡張するだけです。つまり、API に追加することなく、クラスの動作に追加します。基本クラスが抽象インターフェイスであり、動作を実装するためにミックスインが必要なシナリオがあります (ほとんどの場合、実装する戦略またはビルダー パターンがある場合)。

于 2013-11-03T13:07:04.750 に答える