Вопрос

Это может быть довольно просто, но я должен сказать, что я немного запутался по этой теме.

Я пишу код на основе двух популярных библиотек:

  • 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 и подчеркивая переменную. Таким образом, вы можете передать их в функции самообслуживания в качестве аргументов, и все счастливы (:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top