Czy istnieje sposób zdefiniowania modułu, który "dynamicznie" ładuje inne moduły w RequireJS? Jeśli tak, to w jaki sposób optymalizator (r.js) rozumie, w jaki sposób/kiedy moduł musi zostać uwzględniony?Dynamiczne wymagają w RequireJS, otrzymując komunikat "Błąd nazwy modułu nie został jeszcze załadowany dla kontekstu"?
Na przykład, niech dynModules
moduł, który określa par nazwa/ścieżka:
define([], function() {
return ['moduleA', 'moduleB']; // Array of module names
});
Innym moduł ma ładowania modułów dynamicznie na podstawie tablicy. To będzie nie działać:
define(['dyn_modules'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});
... daje mi:
Uncaught Error: Module name "moduleA" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded
mogę rozwiązać błąd, ale to nie jest "dynamiczny" już:
define(['dyn_modules', 'moduleA', 'moduleB'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});
Dzięki za poświęcony czas, znalazłem rozwiązanie Po poszukiwaniach na stronie RequireJS. Zobacz moją odpowiedź. – gremo
Jedynym Mam pytanie jest: używanie 'wymagają (_ wartości (config), ....)' Jest kod asynchroniczny, prawda? Oznacza to, że muszę używać stylu wywołania zwrotnego, gdy kończy się 'require', prawda? – gremo
Tak, i używasz składni wywołania zwrotnego w swojej odpowiedzi. 'Wymagające (_. Wartości (config), funkcja() {' jest w przybliżeniu równa 'wymagają (dynModules funkcja() {' w kopalni. Zarówno użyć zestawu napisów jako pierwszy parametr i dostarczyć funkcję wywołania zwrotnego Jako 2. parametr – explunit