Mixin vs plugin. Что выбрать?

Предположим, что я определил несколько новых компонентов - MyComponent1, MyComponent2,..., которые расширяют Ext.Component.

Теперь я хочу расширить все эти виджеты с той же функциональностью - я хочу добавить кнопку close, которая появится в верхнем правом положении MyComponentX.el.

Что мне следует использовать: mixin? plugin? или что-то еще?
И вообще: mixin vs plugin, что такое лучшая практика?

Ответы

Ответ 1

Мне нравится думать об этом как -

mixin - это то, что вы используете для достижения "множественного наследования",
plugin - это то, что вы используете для улучшения существующего компонента. жизненный цикл плагина управляется компонентом. (нет управления жизненным циклом для mixin. подумайте о mixin как эквиваленте базового класса)

Ответ 2

Свойства и функции Mixin вводятся непосредственно в класс, поэтому они являются частью определения класса.

добавляются плагины на уровне экземпляра

Ответ 3

Плагины добавят функциональность в класс Ext.Component или класс, расширяющий Ext.Component. Объем любого метода в плагине находится в самом плагине.

Mixins может использоваться для добавления функциональности в любой другой класс. Методы mixins будут доступны непосредственно в классе.