2012-03-23 9 views
8

Ich habe eine Backbone-Anwendung mit Require.js für AMD. Ich lade jQuery von Google CDN, aber nach dem Build scheint der Pfad zu jQuery unterbrochen zu sein.Require.js build (r.js) mit CDN jQuery verbindet sich nicht mit dem guten jQuery-Pfad

Die Erstellung erfolgt ohne Probleme oder Fehler. Aber sobald ich die Build-Version verwenden, wird jQuery hinzugefügt Seite mit dieser URL:

http://example.com/assets/js/jquery.js

anstelle der URL CDN. Ich denke, das liegt daran, dass meine Pfadkonfiguration verloren gegangen ist und dass eine Abhängigkeit von "jquery" nicht als Verweis auf den Pfad, sondern als normaler Aufruf eines Skripts verstanden wird.

Hier ist meine Hauptdatei:

main.js

require.config({ 
    baseUrl: '/assets/js/', 
    paths: { 
      use: 'libs/use-0.2.0.min', 
      jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min', 
      underscore: 'libs/underscore-1.3.1.min', 
      backbone: 'libs/backbone-0.9.2.min' 
}, 
    use: { 
      'underscore': { 
        attach: '_' 
      }, 
      'backbone': { 
        deps: ['use!underscore', 'jquery'], 
        attach: function(_, $) { 
          return Backbone; 
        } 
      } 
    } 
}); 

require(['views/app'], function(AppView){ 
    var app_view = new AppView(); 
}); 

app.build.js

({ 
appDir: "../../www", 
baseUrl: "assets/js", 
dir: "../../build", 
optimizeCss: "none", 
optimize: "uglify", 
findNestedDependencies: true, 
preserveLicenseComments: false, 
paths: { 
    use: 'libs/use-0.2.0.min', 
    jquery: 'empty:', 
    underscore: 'libs/underscore-1.3.1.min', 
    backbone: 'libs/backbone-0.9.2.min' 
}, 
modules: [ 
    { 
     name: "main", 
     include: ["views/app"], 
     exclude: ["jquery"] 
    } 
], 
use: { 
    'underscore': { 
     attach: '_' 
    }, 
    'backbone': { 
     deps: ['use!underscore', 'jquery'], 
     attach: function(_, $) { 
      return Backbone; 
     } 
    } 
} 
}) 

(und ich bin mit use.js zum Laden Nicht-AMD-Plugins)

+0

Nach einigen mehr Forschung, scheint es, dass dieses Verhalten durch use.js –

+0

RequireJS 2.0 jetzt Schiffe mit 'shim' verursacht wird, das so ziemlich die gleiche Funktion wie use.js –

Antwort

3

Ich würde zuerst auf die neuesten RequireJS aktualisieren und auf diesen Link finden Sie unter:

http://requirejs.org/docs/optimization.html#empty

Und die Hinweise auf CDN in diesem Abschnitt:

http://requirejs.org/docs/api.html#config

Ein Beispiel für einen lokalen Rückfall für require.config({ paths : {} }) :

Das obige Muster zum Erkennen eines Lastausfalls, Undefinieren eines Moduls, Ändern von Pfaden und Nachladen ist eine häufig genug Anfrage, dass es auch eine Kurzschrift dafür gibt. Die Pfade Config ermöglicht Array-Werte:

requirejs.config({ 
    // To get timely, correct error triggers in IE, 
    // force a define/shim exports check. 
    enforceDefine : true, 
    paths : { 
     jquery : [ 
      '//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min', 
      //If the CDN location fails, load from this location 
      'lib/jquery' 
     ] 
     // etc. 
    } 
}); 
+0

Das ist nicht genau eine Antwort auf die Frage. Aber ich habe keine Probleme mit neuen Projekten mit require.js 2.x-Serie, so dass für jeden anderen Upgrade ist wahrscheinlich eine richtige Antwort. –

+0

Der erste Link hat jetzt eine nicht existierende Antwort. Einer der Gründe, warum Fragen die Lösung hier erklären sollten und nicht nur auf externe Referenzen verlinken ... _sigh_ – kaiser