2016-02-16 20 views
5

Mam skrypt, który importuje wiele modułów AMD i wywołuje metodę inicjalizacji na każdy:ES6: import wielu plików

define(['underscore', './mod0', ..., './modN'], function (_) { 
    _.each(_.toArray(arguments).slice(1), function (m) { 
     init(m); 
    }); 
}); 

muszę przełączyć się składni import ES6 i próbuję dowiedzieć się, jeśli możliwe jest importowanie modułów z listy, w sposób podobny do mojego kodu AMD. Chcę uniknąć szaleństwa, jak:

import mod0 from './mod0'; 
... 
import modN from './modN'; 

init(mod0); 
... 
init(modN); 

Wszelkie porady dotyczące tego, jak można tego dokonać? dzięki!

Odpowiedz

5

Czy można importować moduły z listy?

Nie bez bezpośredniego wywoływania modułu ładującego moduły (cokolwiekkolwiek jest). Nie można tego zrobić, korzystając z deklaracji import.

Wszelkie porady dotyczące tego, jak można tego dokonać?

eval prawdopodobnie mógłby zrobić :-)

Polecam za pomocą dwóch modułów:

// index.js 
export mod0 from './mod0'; 
… 
export modN from './modN'; 

// init-all.js 
import * as modules from './index'; // enumerable namespace 

for (var moduleIdentifier in modules) 
    init(modules[moduleIdentifier]); 

potencjalnie można zrobić to samo z tylko jednego modułu (który importuje się jako obiekt przestrzeni nazw modułów), ale na pewno byłby to prawdziwy obłęd.