C'è un modo per definire un modulo che carica "dinamicamente" altri moduli in RequireJS? Se sì, come l'ottimizzatore (r.js) comprende come/quando un modulo deve essere incluso?Dynamic richiede in RequireJS, ottenendo l'errore "Il nome del modulo non è stato ancora caricato per il contesto"?
Ad esempio, supponiamo dynModules
un modulo che definisce coppie nome/percorso:
define([], function() {
return ['moduleA', 'moduleB']; // Array of module names
});
altro modulo sta per caricare i moduli dinamicamente, basato sulla matrice. Questo non funziona:
define(['dyn_modules'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});
... mi dà:
Uncaught Error: Module name "moduleA" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded
posso risolvere l'errore, ma non è "dinamico" più:
define(['dyn_modules', 'moduleA', 'moduleB'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});
Grazie per il vostro tempo, ho trovato una soluzione dopo la ricerca sul sito RequireJS. Vedi la mia risposta. – gremo
L'unica domanda che ho è: usare 'require (_. Values (Config), ...)' è un codice asincrono, giusto? Ciò significa che ho bisogno di usare lo stile di callback quando termina 'require', giusto? – gremo
Sì, e si sta utilizzando la sintassi di richiamata nella risposta. 'require (_. values (Config), function() {' è approssimativamente equivalente a 'require (dynModules, function() {' nella mia. Entrambi usano una serie di stringhe come primo parametro e forniscono una funzione per la callback come 2 ° parametro – explunit