2011-09-04 3 views
14

Supposons que j'ai défini plusieurs nouveaux composants - MyComponent1, MyComponent2, ..., qui s'étendent Ext.Component.mixin vs plugin. Que choisir?

Maintenant, je wnat pour étendre tous ces widgets avec la même fonctionnalité - Je veux ajouter close bouton qui apparaîtrait dans la position en haut à droite de MyComponentX.el.

Que dois-je utiliser: mixin? plugin? ou autre chose? En général, mixin vs plugin, quelle est la meilleure pratique?

+1

La mixine est l'héritage mais le plugin est la composition. –

Répondre

17

J'aime à penser que -

mixin est ce que vous utilisez pour atteindre « l'héritage multiple »
plugin est ce que vous utilisez pour améliorer un composant existant. Le cycle de vie du plugin est géré par le composant. (pas de gestionnaire de cycle de vie pour mixin.pensez mixin comme équivalent de classe de base)

+0

Merci de votre réponse. Alors, quel est selon vous le meilleur choix pour mon exemple de bouton-poussoir? –

+3

Je l'ai. Le meilleur choix serait 'plugin' car je veux' améliorer un composant existant'. Merci encore. –

+0

En outre, puisque l'OP interrogé sur en général, vous pouvez seulement utiliser des plugins sur 'Ext.Component's –

14

Les propriétés et les fonctions Mixin sont directement injectées dans la classe, de sorte qu'elles font partie de la définition de classe.

plugins sont ajoutés au niveau de l'instance

1

Plugins va ajouter des fonctionnalités à la classe ou la classe Ext.Component extension Ext.Component. L'étendue de toute méthode dans le plugin est dans le plugin lui-même.

Mixins peut être utilisé pour ajouter des fonctionnalités à toute autre classe. Les méthodes mixins seront disponibles directement dans la classe.