Пожалуйста, объясните эти строки в проекте jQuery-ui - это связано с добавлением «суб-плагинов» - PullRequest
2 голосов
/ 10 ноября 2011

Строки 10 - 16 из jquery.effects.core.js :

;jQuery.effects || (function($, undefined) {

    var backCompat = $.uiBackCompat !== false; // Irrelevant

    $.effects = {
        effect: {}
    };

})(jQuery); // At end of file

Насколько я понимаю, это добавляет effects "пространство имен", но только если ононе существует.

Может ли кто-нибудь объяснить мне:

  1. Для чего нужна начальная точка с запятой?
  2. Какова цель * 1014?* параметр?Является ли значение undefined переопределенным в некотором роде?
  3. В чем разница между добавлением функции непосредственно к объекту jQuery и добавлением ее к jQuery.fn, как рекомендовано в документации jQuery ?
  4. Наконец, если я хочу создать набор плагинов jQuery, которые будут использоваться только моей командой, имеет ли смысл объединять их все в пространстве имен компании, используя что-то вроде приведенного выше кода?

Редактировать: Теперь я понимаю, что jQuery.effects, вероятно, плохой пример.Я вижу, jQuery.ui.core.js делает это по-другому:

(function( $, undefined ) {
    $.ui = $.ui || {};

    // add some stuff to $.ui here

    $.fn.extend({
        // plugins go here
    });
})(jQuery);

Но какой смысл в использовании объекта ui, если плагины добавляются непосредственно в $.fn?Могу ли я определить свое пространство имен в $.fn и добавить все мои плагины в $.fn.acme, чтобы я использовал их следующим образом: $('something').acme.doStuff()?

Есть ли лучшая практика для такого рода вещей?

1 Ответ

0 голосов
/ 10 ноября 2011
  • Он проверяет, существует ли jQuery.effects
  • Если нет, он одновременно определяет функцию и вызывает (function() { ... } (jquery), передает объект jQuery по причинам, связанным с областью действия, конфликтом и т.п.
  • Первая строка в этой функции называется нерелевантной, похоже, она проверяет наличие свойства плагина jQuery
  • Он определяет заполнитель (например, пространство имен или класс контейнера) для эффектов.Свойство плагина jQuery.

Итак, на ваши вопросы:

1.Для чего нужна начальная точка с запятой?

Думаю, ничего особенного.Просто обеспечение чистого заявления.Это имеет некоторые крайние случаи, если последняя строка перед этой была закрытием объявления функции.

2.Какова цель неопределенного параметра?Значит ли значение undefined переопределено каким-либо образом?

Это просто гарантирует, что это не произойдет позже.Проходит глобальный объект напрямую.Общая модель, я думаю.

3.В чем разница между добавлением функции непосредственно к объекту jQuery и добавлением ее в jQuery.fn, как рекомендовано в документации по jQuery?

Это способ структурирования jQuery и общая проблема организации.Объект jQuery является функцией и возвращает объект..fn обрабатывает его регистрацию для применения к возвращенным объектам jQuery (из jQuery select или около того), поэтому лучше, чтобы jQuery действительно знал о вашей добавленной функции.

4.Наконец, если я хочу создать набор плагинов jQuery, которые будут использоваться только моей собственной командой, имеет ли смысл объединять их все в пространство имен компании, используя что-то вроде приведенного выше кода?

Большинство людей не хотятне делай этогоНе рекомендовал бы это.Может быть, достаточно обычного «маленького» префикса.

...