Метод, который я в итоге решил использовать, - это регистрация плагина в пространстве имен fn
и переменной api в пространстве имен jQuery $
.Поскольку набор методов и опций работает на экземпляре плагина $.fn
, это лучший выбор.
Однако API является глобальным и не связывается с одним экземпляром.В этом случае $.fn
не совсем подходит.В итоге я использовал нечто похожее на следующее:
(function ($, win, undefined) {
//main plugin functionality
function pluginStuff() { /*...including method calling logic...*/ }
//register function with jQuery
$.fn.Plugin = pluginStuff;
//register global API variable
$.Plugin = { extendMe: {}, getVar: function() {} };
})(jQuery, window);
теперь вы можете создать объект-плагин, как и ожидалось:
$('#elm').Plugin();
$('#elm').Plugin('option', 'something', 'value');
$('#elm').Plugin('method');
, и вы можете легко расширять и получать доступ к API:
$.extend($.Plugin.extendMe, {
moreStuff: {}
});
$.Plugin.getVar('var');
Спасибо за помощь всем!