2014-09-16 8 views
7

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

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

Я прочитал Practical workflows for ES6 modules, которая охватывает множество различных рабочих процессов, ни один из которых включает в себя импортирование модуля ES6 и/CommonJS модуль AMD во время выполнения. Я имею в виду что-то вроде этого:

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

или если не то, чем, по крайней мере:

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

ли любой из них можно с systemjs?

ответ

9

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

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

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

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

+0

Awesome! И я предполагаю, что это также означает, что более поздние вызовы 'import_ from 'lib/underscore';' будут повторно использовать уже импортированный модуль? – bennlich

+0

Да точно - экземпляры модулей являются общими. – guybedford

 Смежные вопросы

  • Нет связанных вопросов^_^