2013-08-10 9 views
5

Ich habe mich gefragt, wie man ein requirjs-Modul mit mehreren Dateien erstellen kann. e.x. Ich benötige eine Datei, die dann irgendwie mehrere Dateien bekommt. Ich weiß, ich könnte dies tun:Wie man ein requirjs-Modul mit mehreren Dateien erstellt

define([all the other files], function() { 
    var mod = {}, 
     files = [all the other files]; 
    arguments.forEach(function (i) { 
    mod.[files[i]] = i; 
    }); 
    return mod; 

}); 

aber ich frage mich, ob es eine bessere Methode war?

+0

Werfen Sie einen Blick auf diese - http://requirejs.org/docs/api.html#modulename – JohnP

+0

Das ist nicht das, wonach ich frage, es ist das komplette Gegenteil, ich will ein Modul, mehrere Dateien, Modulname ist für eine Datei mehrere Module. – swissnetizen

+0

AFAIK, 'Argumente' haben keine' forEach'-Methode, aber ich verstehe den Pseudocode. Was Sie vorschlagen, scheint der einfachste Weg zu sein. –

Antwort

0

Sie möchten eine dynamische Liste von Dateien (.txt, .tpl, .htm, .json), um eine Änderung im JS-Quellcode zu vermeiden, um weitere Dateien hinzuzufügen.

Ich weiß nicht, ob es eine Möglichkeit gibt, das zu tun, aber Sie müssen sich um die Zeit kümmern, die benötigt wird, um alle diese Dateien herunterzuladen. Ich schlage vor, Sie erstellen eine JSON-Datei mit allen Dateien, die Sie herunterladen möchten, und durchlaufen diese Array von Dateien mit Ajax, um sie zu erhalten.

Wenn Sie versuchen, alle Module in ein Verzeichnis zu bekommen, müssen Sie eine js-Datei erstellen: <package-all>.js, die zum Beispiel eine require([all files],function()); einkapseln.

Ich glaube, dass dies der einzige Weg ist, dies zu lösen.

0

erste, schreiben die Module wie diese,

define(function(){ 
    return { 
     'mod-a' : require('modules/mod-a'), 
     'mod-b' : require('modules/mod-b'), 
     'mod-c' : require('modules/mod-c') 

    } 
}) 

dann r.js verwenden, um die oben js optimieren man die Luft zu sprengen (r.js werden alle Moduldatei zu einem zusammenführen), oder, können Sie schreiben wie folgt direkt:

define('modules/mod-a', [], function(){}); 
define('modules/mod-b', [], function(){}); 
define('modules/mod-c', [], function(){}); 

define('mod-all', ['modules/mod-a','modules/mod-b','modules/mod-c'], function(){ 

    return { 
     'mod-a' : require('modules/mod-a'), 
     'mod-b' : require('modules/mod-b'), 
     'mod-c' : require('modules/mod-c') 
    } 
}) 

jetzt, die mods 'mod-all' ist das, was Sie wollten.