2015-05-04 16 views
10

Jak mogę leniwie ładować moduły ES6? Według leniwego, chodzi mi o to, że nie chcę faktycznie ładować modułów, które nie są potrzebne . Na przykład, tutaj jest coś, co mogę zrobić z RequireJS:Jak działa ładowanie leniwych modułów w ES6

function someEventHandler() { 
    var SomeModule = require('some-module'), 
     module = new SomeModule(); 
    // ... 
} 

Coś wzdłuż tych samych linii nie wydaje się być możliwe przy użyciu ES6 Import:

// Doesn't appear to be valid... 
function someEventHandler() { 
    import SomeModule from 'some-module'; 
    var module = new SomeModule(); 
    // ... 
} 

Czy istnieją jakieś realne techniki tylko ciągnąć w zależności w razie potrzeby, za pomocą modułów ES6? Czy jest to jedyna ścieżka do śledzenia pełnego wykresu zależności i pobierania wszystkiego z góry?

+0

Musisz użyć API ładowarka systemu. Zobacz [Dynamiczny import modułu w Ember CLI] (http://stackoverflow.com/q/26728035/218196) –

+0

Nie, nie jest to możliwe przy użyciu składni "import". Możesz jednak użyć asynchronicznego (!) Odpowiednika funkcji 'require'. – Bergi

Odpowiedz

15

Instrukcja import będzie działała tylko w górnej części plików, a wszystkie zostaną załadowane. Jest to głównie w celu uniknięcia potencjalnych problemów z kołowymi zależnościami.

Pojawi się również sposób na ładowanie asynchroniczne; jednak specyfikacja nie wydaje się jeszcze sfinalizowana. Pakiet ES6 module loader polyfill wykorzystuje metodę o nazwie System.import(moduleName) zwracającą obietnicy i ostateczna specyfikacja jest prawdopodobne, aby wyglądać podobnie:

function someEventHandler() { 
    System.import('some-module').then((SomeModule) => { 
     var module = new SomeModule(); 
     // ... 
    }) 
} 
+0

Jakieś aktualizacje dotyczące gotowości tej składni? – fegemo

+5

Istnieje teraz propozycja dynamicznego importowania z JavaScript: https://github.com/tc39/proposal-dynamic-import. Określa prostą funkcję 'import()' w zasięgu globalnym. WebPack 2 obsługuje tę wersję sinusową v2.1.0-beta.28. – jbandi

Powiązane problemy