2013-08-10 6 views
5

Mi chiedevo come creare un modulo requirejs con più file. e.x. Richiedo un file che in qualche modo ottiene più file. So che potrei fare questo:Come creare un modulo requirejs con più file

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

}); 

ma mi chiedevo se ci fosse un metodo migliore?

+0

Dai un'occhiata a questo - http://requirejs.org/docs/api.html#modulename – JohnP

+0

Non è quello che sto chiedendo, È l'esatto contrario, voglio un modulo, più file, il nome del modulo è per un file, più moduli. – swissnetizen

+0

AFAIK, 'arguments' non ha un metodo' forEach', ma capisco lo pseudo-codice. Quello che suggerisci sembra il modo più semplice. –

risposta

0

Si desidera un elenco dinamico di file (.txt, .tpl, .htm, .json), per evitare una modifica del codice sorgente JS per aggiungere altri file.

Non so se c'è un modo per farlo, ma è necessario fare attenzione al tempo necessario per scaricare tutti questi file. Ti suggerisco di creare un file json con tutti i file che vuoi scaricare, e di scorrere questa serie di file usando ajax per ottenerli.

Se si tenta di ottenere tutto il modulo in una directory, è necessario creare un file js: <package-all>.js che incapsuli un require([all files],function()); ad esempio.

Credo che questo sia l'unico modo per risolvere questo problema.

0

prima, scrivere i moduli di questo tipo,

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

    } 
}) 

quindi utilizzare r.js per ottimizzare i js di cui sopra a soffiare uno (r.js combinerà tutti i file del modulo a uno), oppure, è possibile scrivere in questo modo direttamente:

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') 
    } 
}) 

ora, i moduli 'mod-tutto' è la cosa che volevi.