Ist es möglich zu verhindern, dass requireJS die .js-Dateierweiterung automatisch hinzufügt?

Ich benutze requireJS um Skripte zu laden. Es hatDieses Detail in den Dokumenten:

Der Pfad, der für einen Modulnamen verwendet wird, sollte nicht die Erweiterung .js enthalten, da die Pfadzuordnung für ein Verzeichnis gelten könnte.

In meiner App ordne ich alle meine Skriptdateien in einem Konfigurationspfad zu, da sie zur Laufzeit dynamisch generiert werden (meine Skripte beginnen so, wie sie sind)order.js aber werden dinge wieorder.min.b25a571965d02d9c54871b7636ca1c5e.js (Dies ist ein Hash des Dateiinhalts für Cachebusting-Zwecke).

In einigen Fällen fügt require am Ende dieser Pfade eine zweite .js-Erweiterung hinzu. Obwohl ich die dynamischen Pfade auf der Serverseite generiere und dann den Konfigurationspfad auffülle, muss ich dann etwas zusätzlichen Javascript-Code schreiben, um den zu entfernen.js Erweiterung aus den problematischen Dateien.

Beim Lesen der erforderlichen JS-Dokumente verstehe ich wirklich nicht, warum Sie jemals die Pfadzuordnung für ein Verzeichnis verwenden möchten. Bedeutet dies, dass es irgendwie möglich ist, die Dateien eines ganzen Verzeichnisses in einem Aufruf zu laden? Ich verstehe es nicht.

Weiß jemand, ob es möglich ist, einfach das Hinzufügen von .js zu Dateipfaden zu erzwingen, damit ich nicht herumhacken muss?

Vielen Dank.

UPDATE: Einige Codebeispiele wurden wie gewünscht hinzugefügt.

Dies befindet sich in meiner HTML - Datei (es ist ein Scala - Projekt, daher können wir diese Variablen nicht direkt in a schreiben.js Datei):

foo.js.modules = {
    order               : '@Static("javascripts/order.min.js")',
    reqwest             : 'http://5.foo.appspot.com/js/libs/reqwest',
    bean                : 'http://4.foo.appspot.com/js/libs/bean.min',
    detect              : 'order!http://4.foo.appspot.com/js/detect/detect.js',
    images              : 'order!http://4.foo.appspot.com/js/detect/images.js',
    basicTemplate       : '@Static("javascripts/libs/basicTemplate.min.js")',
    trailExpander       : '@Static("javascripts/libs/trailExpander.min.js")',
    fetchDiscussion     : '@Static("javascripts/libs/fetchDiscussion.min.js")'
    mostPopular         : '@Static("javascripts/libs/mostPopular.min.js")'
};

Dann in meinemmain.js:

requirejs.config({
    paths: foo.js.modules
});

require([foo.js.modules.detect, foo.js.modules.images, "bean"], 
    function(detect, images, bean) {
        // do stuff
});

Im obigen Beispiel muss ich die Zeichenfolge "bean" (die sich auf den Pfad require bezieht) anstelle meines direkten Objekts verwenden (wie die anderen verwenden)foo.js.modules.bar) sonst bekomme ich das extra.js angehängt.

Hoffe das macht Sinn.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage