Как вы управляете зависимостями в библиотеках Javascript? - PullRequest
2 голосов
/ 21 марта 2012

Я делаю виджет jQuery, который будет распространяться третьим лицам. Это довольно просто, он сделает вызов ajax и поместит некоторый контент в div на своей странице.

Есть ли простой способ дать им все, что им нужно, в одном файле без возможности конфликта пространства имен?

Я знаю, что мог бы создать один файл, который минимизировал бы jQuery, jQuery UI и мой собственный код, но это могло бы создать конфликты, если у них есть другие версии jQuery. (Например, я мог бы основывать свой код на jQuery 1.7, и они могут по какой-то причине запускать jQuery 1.3.) Так есть ли хорошие решения моей проблемы?

Ответы [ 4 ]

2 голосов
/ 12 февраля 2014

Я знаю, что прошло много времени с тех пор, как вы задавали этот вопрос, но на тот случай, если кто-нибудь получит сюда от Google, как я, это решение, которое вы ищете:

http://www.angrycoding.com/2011/09/managing-dependencies-with-requirejs.html

Подводя итог, вы можете использовать require для загрузки другой версии jquery только для вашего приложения, чтобы она не конфликтовала с устаревшим кодом.

1 голос
/ 21 марта 2012

Может быть, с использованием

var $j = jQuery.noConflict();

// Use jQuery via $j(...)
$j(document).ready(function(){
    $j("div").hide();
});

С http://api.jquery.com/jQuery.noConflict/

1 голос
/ 21 марта 2012

Вы можете использовать jquery.noconflict для отмены ссылки на последнюю включенную версию jquery.

Сразу после включения вашей версии jquery выполните что-то похожее на:

var yournamespace = jQuery.noConflict ();

тогда вместо оператора $ jquery вы используете ваше пространство имен, подобное:

yournamespace ("div p"). Hide ();

1 голос
/ 21 марта 2012

Не следует создавать минимизированную версию с внешними библиотеками.Вместо этого четко укажите свои зависимости в вашем README.Если кто-то использует недостаточную версию jQuery, вам не повезло.

Для более общего подхода к управлению зависимостями посмотрите require.js

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