Question

J'utilise requirejs pour la première fois sur un projet. Je travaille dans un environnement qui a beaucoup de Javascript déjà en place, et je suis à la recherche de moyens propres pour présenter mon propre code.

Le problème que je vais avoir est que je ne peux pas sembler trouver un module de jQuery que je peux charger ce qui ne fonctionne pas clobber existante jQuery.

J'ai été surpris que même require-jquery.js introduit une version globale de jQuery. Est-il possible de charger jQuery comme module sans introduire de globals?

Était-ce utile?

La solution

jQuery 1.7 supports AMD chargement. Mais, l'astuce est d'éviter un conflit de nommage du module, puisque jQuery son propre nom hardcodes du module comme « jquery ». Si vous définissez un autre module comme « jquery » (par exemple, dans la propriété « chemins » dans votre config requirejs), il provoque ledit conflit.

Pour charger jQuery dans votre champ d'application de requirejs, définir un module, comme 'jquery-loader' et quand vous voulez charger jQuery, faites-le via 'jquery-loader':

define(['path/to/jquery.min'], function () {
    return jQuery.noConflict(true);
});

requirejs sera «cache votre référence à jQuery pour que noConflict ne fonctionnera la première fois jquery-chargeur est chargé.

Autres conseils

Plusieurs versions de jQuery sur une seule page est mauvais. Arrêtez le piratage et la mise à niveau jQuery ou utiliser l'ancienne version.

pour garder $ essayer sécurité

(function($) {
    // requirejs inclusion block for loading


}(jQuery.noConflict(true));

Si vous passez true à .noConflict il remplacera l'ancienne variable jQuery et ne pas détruire ce monde.

Cela signifie que vous pouvez passer tranquillement. Disons que vous avez

<script src="jquery-1.2">
<script src="jquery-1.5">

Ensuite, en utilisant le code ci-dessus placerait le dos de 1,2 $ et jQuery dans l'espace global et vous donner 1,5 jQuery comme $ local dans votre fermeture

Encore une fois je vous conseille againts en utilisant des versions multiples parce que son désordre à droite et un cauchemar d'entretien.

Si votre utilisation de 1,5, vous pouvez également utiliser .sub pour vous permettre d'étendre jQuery localement sans altérer la jQuery globale

charger le script jQuery puis utilisez var myJ = jQuery.noConflict();

ou quelle que soit la variable raccourci que vous souhaitez

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

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