2017-04-09 7 views
1

Ich habe eine Verzeichnisstruktur wie folgt.laden erfordern js Module ohne relativen Pfad

|-- app.js 
|-- config.js 
|-- index.html 
|-- js 
| |-- firstpage 
| | `-- firstpage.js 
| |-- lib 
| | `-- jquery-3.2.0.min.js 
| `-- secondpage 
|  `-- secondpage.js 
`-- require.js 

app.js

define(function(require, module){ 
    var $ = require("jquery"), 
    firstpage = require("./firstpage/firstpage"), 
    secondpage = require("./secondpage/secondpage"); 
}) 

wenn ich in Browser "first" index.html laden und "NochNeSeite" ordnungsgemäß geladen.

aber was ich suche ist diese Skripte zu laden, wie mit nur dem Namen folgt:

firstpage = require("firstpage"), 
    secondpage = require("secondpage"); 

ich in docs „Wege“ Attribut als nützlich erwiesen, aber dies scheint übertrieben zu sein, wenn ich habe eine große Anzahl von Dateien, die ich laden möchte und für jede Datei einen separaten Eintrag geben müsste.

Kann jemand bitte einen besseren Weg vorschlagen, dies zu erreichen?

Es scheint eine Menge Lärm (für das Fehlen eines besseren Wortes) um dieses im Internet zu sein, aber ich bin nicht in der Lage, die genaue Lösung mit diesen (es gibt duplicate question als auch, was scheint nicht zu beantworten)

Antwort

0

Wenn Ihr alle Module unter dem gleichen Verzeichnis waren, könnten Sie baseUrl auf das Verzeichnis gesetzt, das sie enthält, und dann könnte man nur das Modul mit einem absoluten Namen erfordern, ohne einen Pfad pro Modul zu spezifizieren, die in Ihrem Aufbau. Ihre Module befinden sich jedoch in unterschiedlichen Verzeichnissen, daher können Sie dies nicht tun.

Die von Ihnen benötigte Funktionalität entspricht der Ausführung der folgenden Umwandlung: moduleName.replace(/^(.*)$/, "./$1/$1"). Leider unterstützt die Laufzeitkonfiguration von RequireJS diese Art der Mustererkennung nicht. Wenn Sie vermeiden möchten, einen Eintrag pro Modul zu erstellen, können Sie ein Skript schreiben, das automatisch paths für Sie ausfüllt.