Файл плагина jQuery, включая библиотеку jQuery - PullRequest
0 голосов
/ 03 июня 2011

В идеале я хотел бы, чтобы js-файл, содержащий плагин, также заботился о включении библиотеки jquery.

Я безуспешно поиграл с парой механизмов: инъекцией XHR-скриптов и базовой скриптовой инъекцией, например:

myplugin.js:

var scriptElem = document.createElement('script');
scriptElem.src = 'jquery-1.6.1.js';
document.getElementsByTagName('head')[0].appendChild(scriptElem);

(function() {
    jQuery.fn.myplugin = function() {
       ...
    }
})();

но, конечно, jQuery не будет определено во времени.

Есть предложения?

Ответы [ 3 ]

4 голосов
/ 03 июня 2011

Я не уверен, что это лучшая практика, я бы лично оставил jQuery включенному разработчику, используя мой плагин.

Но если вы настаиваете ...:)

Вы должны использовать 2 файла, один будет вашим плагином, другой - просто загрузчиком:

myplugin_loader.js

var scriptElem;

if(!window.jQuery){
    // Include jQuery if it's not already loaded
    scriptElem = document.createElement('script');
    scriptElem.src = 'jquery-1.6.1.js';
    scriptElem.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(scriptElem);
}

// Include the main plugin after jQuery
scriptElem = document.createElement('script');
scriptElem.src = 'myplugin.js';
scriptElem.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(scriptElem);

myplugin.js

(function() {
    jQuery.fn.myplugin = function() {
       ...
    }
})();

Если jQuery обязательно загружен, вы можете использовать myplugin.js, если сомневаетесь, включить myplugin_loader.js. Хотя, как я уже сказал, я бы порекомендовал против этого.

3 голосов
/ 03 июня 2011

Вы не должны включать jquery в свой плагин. JQuery является требованием или зависимостью для использования плагина. Вы должны Никогда не включать его в свой плагин! Если вы включите его, это заставит пользователя использовать определенную версию jquery и даже может вызвать проблемы.

0 голосов
/ 03 июня 2011

Скопировать библиотеку jquery в начало того же файла, что и плагин?

Обратите внимание, что если вы воспользовались этим (не рекомендуемый подход), вы должны использовать noConflict и назначить некоторую личную переменную для ссылки jquery, например.

 var $myjQuery = jQuery.noConflict();

и используйте эту ссылку в вашем плагине вместо $ или jQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...