Как работает загрузка ленивого модуля в ES6

Как можно лениво загружать модули ES6? По лени, я имею в виду, что я не хочу загружать модули, которые не нужны. Например, здесь я могу что-то сделать с RequireJS:

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

Что-то в тех же строках не представляется возможным с помощью импорта ES6:

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

Существуют ли какие-либо жизнеспособные методы, чтобы при необходимости извлекать зависимости, используя модули ES6? Или это единственный путь для отслеживания полного графика зависимостей и выборки всех фронтов?

Ответ 1

Оператор import будет работать только в самом верху файлов, и он будет загружать все из них. Это главным образом для того, чтобы избежать потенциальных проблем с круговыми зависимостями.

Также будет возможность выполнять асинхронную загрузку; однако спецификация пока не завершена. загрузчик модуля ES6 polyfill пакет использует метод под названием System.import(moduleName), который возвращает обещание, и окончательная спецификация может выглядеть аналогично:

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

Ответ 2

Пример для отложенной загрузки jQuery в ES6:

import('jquery').then((jquery) => {
     // Because jquery is the module, here is the new syntax for using this 
          window.$ = jquery.default;
          window.$('#id');
});