2013-09-06 7 views
9

Ich benutze requirjs. Mein main.js Inhalt ist wie folgt.Requirejs Konfiguration in einer anderen Datei

requirejs.config({ 
    async: true, 
    parseOnLoad: true, 
    packages: [], 
    paths: { 
     jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min' 
    } 
}); 

require(["login"], function (loginService) { 

    loginService.login('validUser'); 

}); 

Jetzt sind meine Konfigurationselemente wenig. Aber später, ich werde Pakete, Pfade und andere hinzufügen, so dass die require.config Zeilen erhöhen wird.

  1. Ich will getrennte require.config als eine andere Datei und es verwenden?
  2. Wenn jquery load verzögert, tritt der Fehler auf? Meine anderen Javascript-Dateien verwenden es.

Antwort

1
  1. Sie können die Konfiguration in eine separate JS-Datei setzen, das ist kein Problem. Stellen Sie nur sicher, dass die Datei vor dem require() Aufruf in Ihrem Hauptcode geladen wird.

  2. Wenn Sie für andere Skripte jQuery verwenden, die nicht über requireJS geladen werden, erhalten Sie Fehler, wenn sie passieren, früher als jQuery zu laden. Was Sie tun müssen, ist konvertieren Sie alle diese statischen Dateien in requireJS Module und laden Sie alle über requireJS. Durch die Verwendung einer define()-Funktion in jedem der Module können Abhängigkeiten eingerichtet werden, sodass alle Module auf das Laden von jQuery warten, bevor sie ihren eigenen Code ausführen.

+3

Sie können auch Shims (http://requirejs.org/docs/api.html#config-shim) verwenden, um zu vermeiden, dass Sie defragmentiert um nicht-AMD JS umbrechen müssen. –

+0

Paul - das ist sehr korrekt und kann für jQuery-Plugins und dergleichen verwendet werden - für weitere Informationen, siehe http://requirejs.org/docs/api.html#config-shim –

13

Ja, Sie, Ihre Konfiguration benötigen können, bevor Sie etwas anderes benötigen, wie dies :

Konfigurationsbeispiel:

require.config({ 
    baseUrl: '/Public/js', 
    paths: { 
     jquery: '../../Scripts/jquery-1.10.2.min', 
     jqueryui: '../../Scripts/jquery-ui-1.10.2.min', 
    }, 
    shim: { 
     jqueryui: { 
      deps: ['jquery'] 
     }, 
    } 
    waitSeconds: 3 
}); 

und dann lade ich es:

require(['/Public/js/config.js'], function() { 
    require(['home/index'], function() {     
    }); 
}); 

Denken Sie daran, dass Sie die config.js durch den Pfad in der ersten require-Anweisung zu verweisen, weil require.js nicht durch baseUrl lösen kann, da sie nicht geladen wurde. Wenn Sie zu der inneren request() - Anweisung gelangen, wird diese geladen und Sie können Abhängigkeiten relativ zu baseUrl referenzieren.