Chargement de la colonne vertébrale et le trait de Soulignement à l'aide de RequireJS
Je suis en train de charger épine Dorsale et le trait de Soulignement (ainsi que jQuery) avec RequireJS. Avec les dernières versions de l'épine Dorsale et le trait de Soulignement, il semble un peu difficile. Pour l'un, trait de Soulignement s'enregistre automatiquement dans un module, mais épine Dorsale suppose trait de Soulignement est disponible dans le monde entier. Je tiens également à noter que la Dorsale ne semble pas s'inscrire en tant que module qui en fait une sorte d'incohérence avec les autres libs. C'est le meilleur main.js j'ai pu arriver que des œuvres:
require(
{
paths: {
'backbone': 'libs/backbone/backbone-require',
'templates': '../templates'
}
},
[
//jQuery registers itself as a module.
'http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js',
//Underscore registers itself as a module.
'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.2.1/underscore-min.js'
], function() {
//These nested require() calls are just due to how Backbone is built. Underscore basically says if require()
//is available then it will automatically register an "underscore" module, but it won't register underscore
//as a global "_". However, Backbone expects Underscore to be a global variable. To make this work, we require
//the Underscore module after it's been defined from within Underscore and set it as a global variable for
//Backbone's sake. Hopefully Backbone will soon be able to use the Underscore module directly instead of
//assuming it's global.
require(['underscore'], function(_) {
window._ = _;
});
require([
'order!http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js',
'order!app'
], function(a, app) {
app.initialize();
})
});
Je dois mentionner que, même si elle fonctionne, l'optimiseur étouffe sur elle. J'ai le message suivant:
Tracing dependencies for: main
js: "/home/httpd/aahardy/requirejs/r.js", line 7619: exception from uncaught JavaScript throw: Error: Error: Error evaluating module "undefined" at location "/home/httpd/aahardy/phoenix/trunk/ui/js/../../ui-build/js/underscore.js":
JavaException: java.io.FileNotFoundException: /home/httpd/aahardy/phoenix/trunk/ui/js/../../ui-build/js/underscore.js (No such file or directory)
fileName:/home/httpd/aahardy/phoenix/trunk/ui/js/../../ui-build/js/underscore.js
lineNumber: undefined
http://requirejs.org/docs/errors.html#defineerror
In module tree:
main
Est-il une meilleure façon de gérer cela? Merci!
- Avez-vous le faire à l'aide de tutoriel?
- J'ai regardé à travers les différents tutoriels comme backbonetutorials.com/organizing-backbone-using-modules, mais ils semblent être devenus obsolètes avec les dernières versions de trait de soulignement et de la colonne vertébrale.
- J'ai aussi trouvé requirejs difficile à utiliser avec d'autres bibliothèques et vice-versa. C'est pourquoi j'ai créé une bibliothèque qui est beaucoup plus facile à utiliser et mis à l'essai avec angulaire. Il y a une démo de l'application en bas: gngeorgiev.github.io/Modulerr.js Vous pouvez également combiner tous les scripts en un seul sans la dépendance à Modulerr.js
- btw Synchrone Asynchrone de Définition de Module est un peu oxymore 🙂
- Ha! Bon point. Édité.
Vous devez vous connecter pour publier un commentaire.
RequireJS 2.X maintenant organiquement adresses non-AMD modules tels que l'épine Dorsale & trait de Soulignement beaucoup mieux, à l'aide de la nouvelle
cale
de configuration.La
shim
configuration est simple à utiliser: (1) l'un des états les dépendances (deps
), le cas échéant, (qui peut être de l'paths
de configuration, ou peut-être valable chemins eux-mêmes). (2) (facultatif) spécifiez le nom de la variable globale à partir du fichier de calage, qui doit être exportées vers votre module de fonctions qui en ont besoin. (Si vous ne spécifiez pas les exportations, alors vous aurez besoin d'utiliser l'échelle mondiale, que rien ne sera transmis à votre besoin/définir des fonctions.)Voici un exemple simple d'utilisation de
shim
à la charge de la colonne vertébrale. Il ajoute également un export pour souligner, même si elle n'a pas de dépendances.Remarque: cela a simplifié le code suppose que jquery, backbone et le trait de soulignement sont dans les fichiers nommés "jquery.js", "backbone.js" et "underscore.js" dans le même répertoire que cette "main" du code, qui devient le baseURL pour exiger). Si ce n'est pas le cas, vous aurez besoin d'utiliser un les chemins de config.
Personnellement, je pense qu'avec le haut-
shim
les fonctionnalités, les avantages de ne pas utiliser un fork de la version de l'épine Dorsale & Soulignent l'emportent sur les avantages de l'utilisation de l'AMD fourche recommandée dans l'autre réponse, mais de toute façon œuvres.Sample RequireJS 2.0.1 + jQuery 1.7.2 project
requirejs.org/docs/download.html#samplejquery?Mise à jour: à partir de la version 1.3.0 Trait de soulignement supprimé AMD (RequireJS) soutien.
Vous pouvez utiliser le amdjs/Backbone 0.9.1 et la amdjs/trait de Soulignement 1.3.1 fourche avec support AMD de James Burke (le responsable de RequireJS).
Plus d'infos sur Le support AMD pour Souligner et de la colonne vertébrale.
Les modules sont correctement enregistrés et il n'est pas nécessaire pour la commande du plugin:
Trait de soulignement est en fait facultatif, en raison de la Dorsale obtient ses dépendances sur son propre:
Avec certains AMD sucre vous pouvez aussi l'écrire comme ceci:
Concernant l'optimiseur d'erreur: de façon optimale votre configuration de build. Je suppose que votre configuration de chemin d'accès est éteint. Si vous avez un répertoire configuration similaire à la RequireJS Docs vous pouvez utiliser:
De référence, à partir de la version 1.1.1 (~Février '13), de la colonne vertébrale aussi l'enregistrement lui-même comme un AMD module. Il travaillera avec requirejs, sans avoir à utiliser sa cale de config. (James Burke amdjs fourche n'a pas été mis à jour depuis la version 1.1.0)
Bonne nouvelle, le trait de Soulignement 1.6.0 prend désormais en charge requirejs définir !!!
les versions inférieures à ce besoin des cales, ou nécessitant underscore.js ensuite, à l'aveuglette, en espérant que le "_" variable globale n'a pas été écrasé (qui, pour être juste est un pari juste)
il suffit de charger dans la
Je vais écrire directement, vous pouvez lire l'explication sur requirejs.org, vous pouvez utiliser de code ci-dessous un extrait de code pour votre usage quotidien; p.s. j'utilise yeoman) (comme beaucoup de choses, mis à jour à, la mi ce détachement Février 2014.)
Assurez-vous que vous avez inclus dans votre script index.html
Puis, dans main.js
app.js
J'espère avoir été utile.!