2011-09-04 21 views
14

Supongamos que he definido varios componentes nuevos: MyComponent1, MyComponent2, ..., que extienden Ext.Component.mixin vs plugin. ¿Qué elegir?

Ahora deseo extender todos estos widgets con la misma funcionalidad - Deseo agregar el botón close que aparecería en la posición superior derecha de MyComponentX.el.

¿Qué debo usar: mixin? plugin? ¿o algo mas?
Y en general: mixin vs plugin, ¿cuál es la mejor práctica?

+1

Mixin es herencia, pero los complementos son composición. –

Respuesta

17

me gusta pensar en ello como -

mixin es lo que se utiliza para lograr 'inheritence múltiple'
plugin es lo que se utiliza para mejorar un componente existente. el ciclo de vida del plugin es administrado por el componente. (no hay administración de ciclo de vida para mixin. piense en mixin como equivalente de clase base)

+0

Gracias por la respuesta. Entonces, ¿cuál crees que es la mejor opción para mi ejemplo de botón de cierre? –

+3

Lo tengo. La mejor opción sería 'plugin' como quiero' mejorar un componente existente'. Gracias de nuevo. –

+0

Además, dado que el OP preguntó en general, solo puede usar complementos en 'Ext.Component's –

14

Las propiedades y funciones de Mixin se inyectan directamente en la clase, por lo que forman parte de la definición de clase.

plugins se añaden a nivel de instancia

1

Plugins será agregar funcionalidad a la clase Ext.Component o de la clase que se extiende Ext.Component. El alcance de cualquier método en el complemento está en el plugin.

Mixins se puede utilizar para agregar funcionalidad a cualquier otra clase. mixins métodos estarán disponibles directamente en la clase.

Cuestiones relacionadas