D'accord, il est la chose. J'utilise curl.js pour mon chargeur AMD, mais je n'aime pas beaucoup de "cram" car il doit être exécuté sur unix et je développe sur Windows. Donc, l'adaptateur r.js pour nodeJS de la bibliothèque RequireJS vient à l'esprit, car le noeud a déjà un binaire pour Windows.jQuery comme module AMD et l'optimisation avec r.js
Maintenant jQuery dans la version actuelle (1.6.4) n'est pas le module AMD valide (en version 1.7 à venir) et il y a des dépendances dans les composants jQueryUI, donc je devais faire semblant comme ceci:
curl([js!Core/jquery.js])
.then(function() {
define('jquery', function() { return jQuery; });
})
Mon application est heureux avec ça. Cependant, l'utilisation r.js (version 0.26.0) échoue sur cette partie avec l'erreur suivante:
Tracing dependencies for: boot
function(){return jQuery}
node.js:207
throw e; // process.nextTick error, or 'error' event on first tick
^
ReferenceError: jQuery is not defined
at eval at <anonymous> (r.js:7468:30)
at main (r.js:770:33)
at callDefMain (r.js:840:18)
Ceci est mon app.build.js
({
appDir: '../',
baseUrl: 'Scripts/',
paths: {
'link': '../../../Lib/@Javascript Libs/curl.js/src/curl/plugin/link.js'
},
dir: 'built',
optimize: 'none',
modules: [
{ name: 'boot' }
]
})
Et voici complète boot. js pour référence (coffeescript):
require([
'link!styles/main.css'
'js!Core/jquery.js!order'
'js!Core/underscore.js!order'
'js!Core/backbone.js!order'
]).then ->
define 'jquery', -> jQuery
.next(['Router/MainRouter'])
.then (MainRouter) ->
new MainRouter()
Backbone.history.navigate('home') unless Backbone.history.start(
pushState: false
)
Merci d'avance pour toute indication où la capture peut être ...
Oh, je pense savoir ce qui se passe là-bas. RequireJS ne fonctionne pas avec le chargement AMD basé sur les promesses, donc il ne comprend pas ces fonctions "then" et "next" et essaie de définir jquery avant qu'il ne soit vraiment chargé ... Des idées sur ce que je peux faire à ce sujet? – FredyC