миксин против плагина. Что выбрать?

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

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

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


person Molecular Man    schedule 04.09.2011    source источник
comment
Миксин — это наследование, а плагин — это композиция.   -  person    schedule 20.08.2013


Ответы (3)


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

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

person Amol Katdare    schedule 04.09.2011
comment
Спасибо за ответ. Итак, что, по вашему мнению, лучше всего подходит для моего примера с кнопкой закрытия? - person Molecular Man; 04.09.2011
comment
Я понял. Лучшим выбором будет plugin, так как я хочу to enhance an existing component. Еще раз спасибо. - person Molecular Man; 05.09.2011
comment
Кроме того, поскольку ОП спрашивал в целом, вы можете использовать плагины только на Ext.Components - person Juan Mendes; 09.11.2016

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

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

person user732456    schedule 18.11.2011

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

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

person Gaurav Pandey    schedule 01.12.2015