2015-05-04 14 views
10

'da nasıl çalışır? Tembel yükleme ES6 modülleri nasıl çalışır? tembel tarafından, aslında gerekli olmayan modülleri yüklemek istemiyorum. Tembel modül yükleme işlemi ES6

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

sadece çekmek için herhangi yaşayabilir teknikler var mıdır: Aynı doğrultuda

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

şey ES6 ithalatı kullanılarak mümkün görünmüyor: Örneğin, burada RequireJS ile yapabileceği bir şey var Gerektiğinde bağımlılıklar, ES6 modülleri kullanılıyor mu? Ya da tam bağımlılık grafiğini takip edip her şeyi ön tarafa getirmenin tek yolu bu mu?

+0

Sistem yükleyici API kullanmak zorunda: ES6 module loader polyfill paketi bir söz verir ve son şartname benzer muhtemeldir System.import(moduleName) adlı bir yöntem kullanır. Bkz. [Ember CLI'de dinamik modül içe aktarma] (http://stackoverflow.com/q/26728035/218196) –

+0

Hayır, 'import' sözdizimini kullanmak mümkün değildir. Ancak, 'require' işlevinin bir eşzamansız (!) Eşdeğerini kullanabilirsiniz. – Bergi

cevap

15

import ifadesi yalnızca dosyaların üstünde çalışır ve bu dosyalar yüklenmez. Bu temel olarak, dairesel bağımlılıklar ile ilgili potansiyel sorunları önlemek içindir.

Asenkron yükleme yapmak için bir yol da olacaktır; Ancak şartname henüz kesinleşmiş gibi görünmüyor.

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

Bu sözdiziminin hazırlığıyla ilgili herhangi bir güncelleme var mı? – fegemo

+5

Artık JavaScript’ten dinamik içe aktarma için bir teklif var: https://github.com/tc39/proposal-dynamic-import. Genel kapsamda basit bir 'import()' işlevini belirtir. WebPack 2, bu sinve sürümü v2.1.0-beta.28'i destekler. – jbandi

İlgili konular