Объединение кода с зависимостями?
-
13-10-2019 - |
Вопрос
Это может быть довольно просто, но я должен сказать, что я немного запутался по этой теме.
Я пишу код на основе двух популярных библиотек:
- jQuery
- подчеркивается
Мне просто интересно Как бы лучший способ изолировать код и предотвратить конфликты и как объединить его с его зависимостями?
Я имею в виду, я имею в виду их размещение в одном и том же файле.
Решение
Вы можете легко поместить их в одном и том же файле, потому что единственные вещи, которые они становятся глобальными, это window._
, window.$
а также window.jQuery
. Анкет Другие переменные и функции обернуты в локальную область, поэтому конфликта не будет.
Редактировать: Ваш собственный код тоже может быть помещен в один и тот же файл. И если вы предпочитаете удалять глобалов, как jQuery, так и подчеркивание имеют неконфликтный метод, который заменяет глобалов на их старые значения (часто undefined
) Вы можете обернуть свой код в свой собственный локальный сферу, и больше не будет никаких проблем:
// jQuery and Underscore source here
// You code here, wrapped in a self-executing function:
(function($, _){
// here you can add your code:
$('#test').text('jQuery works');
_(3).times(function(){
alert('Underscore works' );
});
})(jQuery.noConflict(true), _.noConflict());
// no jQuery nor Underscore here:
alert(typeof jQuery, typeof $, typeof _);
Это выглядит довольно сложно, но позвольте мне объяснить это очень быстро. Вы можете немедленно выполнить функцию после определения ее, например:
(function(){
alert('I am being executed');
})(); // <-- basically how you call a function normally: func();
И вы можете передать в нем аргументы:
(function(a){
alert(a);
})('test');
Оба $.noConflict()
а также _.noConflict()
Удалите глобальные переменные и верните ссылку на jQuery и подчеркивая переменную. Таким образом, вы можете передать их в функции самообслуживания в качестве аргументов, и все счастливы (: