General Plugin Convention
Хороший дизайнер плагинов обычно создает очень маленький глобальный след. Если предоставляется объект или функция многократного использования, они должны быть доступны откуда-либо.
Обычно это делается путем добавления одного глобального объекта, который содержит необходимые функции (или - это необходимая функция).
Пример: если на страницу добавляется плагин foo.js
, вы можете ожидать, что он добавит
window.foo = {};
//or
window.foo = function(){};
Было бы глупо для любого разработчика использовать два сценария /path/to/foo.js
и /different/path/to/foo.js
и ожидать, что они будут хорошо работать вместе, поскольку они, вероятно, совместно используют одно пространство имен.
Однако для плагинов jQuery для плагинов требуется jQuery. Таким образом, нет причин загрязнять глобальное пространство имен, если вы можете гарантировать существование объекта jQuery
.
Поскольку (по определению) для плагинов jQuery требуется jQuery, рекомендуемое соглашение об именах для плагинов: jQuery.[plugin name].js
. Как и обычные плагины, для разработчика было бы глупо использовать два скрипта /path/to/jQuery.foo.js
и /different/path/to/jQuery.foo.js
и ожидать, что они будут хорошо работать вместе.
jQuery нюансы
Некоторые плагины jQuery расширяют $.fn[pluginName]
, другие являются дополнительными функциями (например, $.each
, $.ajax
и $.extend
), а некоторые расширяют возможности селектора jQuery. Каждому из них часто требуются глобально постоянные данные, будь то значения по умолчанию, служебные функции или что у вас есть.
Плагин, создающий $.fn.foo
, может также хотеть, чтобы $.foo.defaultSettings
был постоянным и расширяемым.
Что касается преимуществ, добавление плагинов jQuery к объекту jQuery
уменьшает глобальное загрязнение, и я не знаю никого, кто бы любил загрязнение.