J'utilise require JS et je souhaite connaître la meilleure méthode pour utiliser une version CDN de jQuery. J'entends la version 1.7 est "AMD" qui est censé aider, mais ne trouve pas un exemple clair. J'espère que certains gourous de RequireJS pourront m'aider.
Réponses
Trop de publicités?jQuery 1.7 enregistre lui-même comme un AMD module sous le nom de 'jquery', alors vous avez besoin pour créer un mappage pour 'jquery' à l'aide de chemins de config:
requirejs.config({
paths: {
'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min'
}
});
require(['jquery'], function($) {
//$ points to jQuery
});
Notez cependant que RequireJS charge des modules de manière asynchrone et de l'ordre, donc si vous avez des plugins jQuery vous souhaitez utiliser qui ne sont pas enveloppés dans define(['jquery'], function ($){ /* plugin code goes here */ });
des appels, le plugin s'exécute avant que jQuery est chargé.
Voir le nécessitent-jquery projet README sur les moyens de traiter avec les fichiers qui dépendent de jQuery, mais ne pas s'enroulent à l' define()
des appels.
La réponse de @ jrburke ne fonctionne pas pour moi. Selon le document api RequireJS , vous ne devez pas inclure l'extension de fichier dans le chemin. Alors voici le code de travail:
requirejs.config({
paths: {
'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
}
});
require(['jquery'], function($) {
//$ points to jQuery
});
J'ai un exemple de travail sur jsfiddle: http://jsfiddle.net/murrayju/FdKTn/
Vous pouvez l'inclure en tant que dépendance d'un module, mais c'est un peu excentriques. e.g
define([
"order!http://code.jquery.com/jquery-1.7.min.js"
], function($) {
})
Il n'est pas si bon pour 2 raisons
1) le fichier jquery lui-même n'est pas un module, donc l' $
vous obtenez à partir de la fonction ne sera pas jquery
2) l' order!
plugin ne fonctionne pas bien avec CA versions des scripts. Voir Requirejs' ordre ne fonctionne pas avec la priorité config et CA dépendances
Je n'ai pas eu la chance de l'utiliser dans un "vrai" projet encore parce que nous n'avons pas mis à jour encore, mais à partir de mes tests, j'ai trouvé que la meilleure façon est d'inclure jquery dans une balise script, alors qu'il fonctionne très bien comme une dépendance de vos modules. J'espère que le petit échantillon sera utile:
<html>
<head>
<title>Index2</title>
<script src="../../scripts/libraries/jquery.js" type="text/javascript"></script>
<script src="../../scripts/libraries/require.js" type="text/javascript"></script>
<script type="text/javascript"">
require(
{baseUrl: 'scripts'},
['jquery'],
function (dollarSign) {
console.log(dollarSign('div').html('hi'));
});
</script>
</head>
<body>
<div>
</div>
</body>
</html>
Tout d’abord, il est recommandé d’utiliser l’ URL relative au protocole pour jQuery CDN. Et deuxièmement, utilisez un tableau en valeur avec CDN et des emplacements locaux pour charger le fichier local si CND est mort. Vous pouvez utiliser autant d'URL de CDN que vous voulez. N'ayez pas peur, il ne veut pas charger le second fichier depuis un emplacement local si vous le téléchargez avec succès depuis CDN.
requirejs.config({
paths: {
'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min', 'lib/jquery-1.10.2.min']
}
});