Plugin manager.
Example:
const PluginManager = require('./plugin-manager');
PluginManager.register('fast-click-highlight', ['view', 'field'], {
    color : "red",
    events: {
        'click .fast-click-highlighted': 'onClickItem'
    },
    onClickItem: function(e) {
        alert(1)
    },
    // The onAttach function will be called every time the plugin is
    // attached to a new component. It will be executed from the scope of
    // the component being attached to.
    //Applied after the plugin has been mixed into the component.
    onAttach: function(component, plugin) {
        this.on('render', function(){
            //same as plugin.color and component.$el.css
            this.$el.css('color', this.color);
        });
    }
});
If you want to use the current plugin for a view, you have to declare the
plugin in it:
const ViewManager = require('../view/view-manager');
var MyView = ViewManager.View.extend({
    initialize: function(options) {},
    plugins: ['fast-click-highlight'],
     ...,
});
// or
$plugins: [{
    'fast-click-highlight': {
        events: {
            'click article' : 'onClickItem'
        }
    }
}],
onClickItem: function() {
    alert(2);
}
If you want to disable a plugin, you have to use the disabledPlugins
property as in the following example:
var MyView = ViewManager.View.extend({
    initialize: function(options) {},
    disabledPlugins: ['fast-click-highlight'],
    ...,
});