Импорт модулей commonJS, AMD и ES6 во время выполнения с синхронным синтаксисом

В последнее время я много писал для ES6, используя синтаксис import {variable} from 'ES6module' и компилируя код в браузере с помощью traceur-compiler . Я начал смотреть на systemjs, поскольку казалось, что это может позволить мне использовать тот же синтаксис для импорта AMD, commonJS, и Модули ES6.

Однако чтение документации начало меня сбивать с толку. Я вижу много асинхронных вызовов, таких как System.import('path/to/module').then(function(variable) { ... }), к которым я не привык для импорта зависимостей.

Я прочитал Практические рабочие процессы для модулей ES6, который охватывает множество различных рабочих процессов, ни один из которых не требует импорта Модуль ES6 и модуль AMD / commonjs во время выполнения. Я думаю примерно так:

import {myObject} from 'my/es6/module';
import {_} from 'lib/underscore';

а если не то, то хотя бы:

import {myObject} from 'my/es6/module';
var _ = require('lib/underscore');

Возможно ли что-то из этого с systemjs?


person bennlich    schedule 16.09.2014    source источник


Ответы (1)


Этот вариант использования - именно то, для чего предназначен SystemJS.

Ты можешь написать:

import {myObject} from 'my/es6/module';
import _ from 'lib/underscore';

Причина в том, что модули CommonJS, AMD и Global в SystemJS обрабатываются так, как будто они экспортируют только свойство default, что соответствует синтаксису импорта по умолчанию, указанному выше.

person guybedford    schedule 25.09.2014
comment
Потрясающие! И я предполагаю, что это также означает, что последующие вызовы import _ from 'lib/underscore'; будут повторно использовать уже импортированный модуль? - person bennlich; 27.09.2014
comment
Да, именно так - экземпляры модуля являются общими. - person guybedford; 27.09.2014