Frage

Das mag recht einfach sein, aber ich muss sagen, ich bin ein bisschen verwirrt über dieses Thema.

Ich schreibe Code basierend auf zwei beliebten Bibliotheken:

  • JQuery
  • unterstrichen.js

ich wundere mich Was wäre der beste Weg, um den Code zu isolieren und Konflikte zu verhindern, und wie fusioniert man ihn mit seinen Abhängigkeiten?

Mit Zusammenführung meine ich, sie in die gleiche Datei zu legen.

War es hilfreich?

Lösung

Sie können die beiden leicht in derselben Datei einfügen, weil die einzigen Dinge, die sie global werden, sind window._, window.$ und window.jQuery. Die anderen Variablen und Funktionen sind in ein lokales Zielfernrohr eingewickelt, sodass es keinen Konflikt gibt.


Bearbeiten: Ihr eigener Code könnte auch in dieselbe Datei eingefügt werden. Und wenn Sie es vorziehen, die Globalen zu entfernen, haben sowohl JQuery als auch Unterstrichen eine Nicht-Konflikt-Methode, die die Globalen durch ihre alten Werte ersetzt (oft undefined). Sie können Ihren Code in Ihren eigenen lokalen Bereich wickeln und es wird keine Probleme mehr geben:

// 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 _);

Das sieht ziemlich schwierig aus, aber lassen Sie mich es sehr schnell erklären. Sie können eine Funktion sofort ausführen, nachdem Sie sie definiert haben:

(function(){
  alert('I am being executed');
})();  // <-- basically how you call a function normally: func();

Und Sie können Argumente darin bestehen:

(function(a){
  alert(a);
})('test');

Beide $.noConflict() und _.noConflict() Entfernen Sie die globalen Variablen und geben Sie eine Referenz auf die JQuery und die Unterstriche zurück. So können Sie diese in der Selbstausnahmefunktion als Argumente übergeben und alle sind glücklich (:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top