comprendre les chemins requirejs
À l'aide de requirejs mon main.js on dirait que cette
requirejs.config({
baseUrl: '/javascript/',
paths: {
jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min',
async: 'requirePlugins/async',
hbs: 'hbs'
},
waitSeconds: 7
});
define(['common'], function () {
loadFonts();
});
L'main.js est inclus dans la page avec un script d'appel
<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>
Commun est la fonction de base pour le site web, jquery doc fonction ready etc. enveloppé dans une de définir appel:
define(['jquery'], function() {
//jQuery dependant common code
});
Cela fonctionne bien, jQuery est chargé à partir du google CDN et le code est exécuté. Mais quand j'ajoute un besoin de rappel après la charge de main.js
<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>
require(['jquery'], function ($) {
//code
});
jquery est demandé à partir de /javascript/jquery.js au lieu de la trajectoire de la google ca. Je suis encore un novice à requirejs, mais il me semble que le chemin doit être défini avant toutes les autres demandes sont licenciés, quelqu'un peut-il m'aider à comprendre ce que je fais mal?
source d'informationauteur Hans Skov
Vous devez vous connecter pour publier un commentaire.
Je pense que cela pourrait être dû à l'utilisation de la
data-main
attribut sur la RequireJS balise de script; pour être analysée, RequireJS lui-même a à charge et d'analyser. Lors de mes tests (en particulier pour IE9), le navigateur de télécharger et d'exécuter des balises de script directement à la suite de la RequireJS balise de script avant de l'analyse de la RequireJS fichier de configuration (celui indiqué par ledata-main
attribut).Pour contourner ce problème, j'ai simplement cesser d'utiliser le
data-main
attribut et au lieu placé le fichier de config normal balise de script directement après la RequireJS balise de script, et tout semble être heureux maintenant.Plus précisément, c'est à quoi il ressemble (à l'aide de votre échantillon):
Peut-être vous mettre la config instruction avant d'exiger js en cours de chargement.
Vous devez charger require.js tout d'abord, mettez votre config code après, puis d'appeler require(['jquery'], ...);
La raison elle recherche /javascript/est parce que votre require.js le fichier se trouve là-bas et il est par défaut l'url de base.
Votre config ne peut jamais être utilisé par require.js.
Voir ce tutoriel sur besoin config.
Vous devez le renommer définir pour exiger
Je vous recommande d'utiliser
map
au lieu depaths
pour configurer le module spécifique de lieux.paths
est conçu plus pour les raccourcis/prefixs simplifier/configurer comprend, plutôt que plein de module chemins.Garder à l'esprit: vous aurez besoin de placer les mappages que vous souhaitez appliquer à l'échelle mondiale sous un astérisque (
*
) dans lemap
objet.La raison en est que vous mettez
require(['jquery']...
immédiatement après le chargement require.js le module. Comme le résultat, il essaie de charger['jquery']
avant de lire vos paramètres de configuration.Et pourquoi il essaie de trouver jquery dans
/javascript/jquery.js
? c'est à cause de votredata-main
attribut.Ce lien précise require.js chargement du module de procédure:
http://requirejs.org/docs/api.html#jsfiles
je pense que vous pouvez intégrer l'url complète dans le besoin de bloc. comme:
btw, votre jquery lien n'est pas valide.