Question

Cela peut être assez simple, mais je dois dire que je suis un peu confus sur ce sujet.

Je l'écriture de code basé sur deux bibliothèques populaires:

  • jQuery
  • underscore.js

Je me demande quelle serait la meilleure façon d'isoler le code et prévenir les conflits et comment fusionner avec ses dépendances?

En fusionnant je veux dire de les mettre dans le même fichier.

Était-ce utile?

La solution

Vous pouvez facilement placer les deux d'entre eux dans le même fichier, car les seules choses qu'ils tournent mondiale sont window._, window.$ et window.jQuery. Les autres variables et fonctions sont enveloppés dans une portée locale, donc il n'y aura pas de conflit.


Modifier : Votre propre code pourrait être mis dans le même fichier aussi. Et si vous préférez supprimer les globals, à la fois jQuery et ont une méthode Souligné sans conflit, qui remplace les GLOBALS avec leurs anciennes valeurs (souvent undefined). Vous pouvez envelopper votre code dans votre portée locale et il n'y aura pas plus de problème:

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

Cela semble assez difficile, mais laissez-moi vous expliquer très rapidement. Vous pouvez exécuter une fonction immédiatement après sa définition, comme ceci:

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

Et vous pouvez passer des arguments en elle:

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

Les deux $.noConflict() et _.noConflict() supprimer les variables globales et renvoient une référence à la variable jQuery et soulignement. Ainsi, vous pouvez les transmettre dans la fonction d'auto-exécution comme arguments et heureux de tout le monde (:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top