使用同步语法在运行时导入commonJS,AMD和ES6模块

ben*_*ich 6 module ecmascript-6 systemjs

我最近一直在编写很多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';
Run Code Online (Sandbox Code Playgroud)

或者如果不是,至少:

import {myObject} from 'my/es6/module';
var _ = require('lib/underscore');
Run Code Online (Sandbox Code Playgroud)

systemjs是否可以使用其中任何一个?

guy*_*ord 9

这个用例正是SystemJS的设计目标.

你可以写:

import {myObject} from 'my/es6/module';
import _ from 'lib/underscore';
Run Code Online (Sandbox Code Playgroud)

原因是因为SystemJS中的CommonJS,AMD和Global模块被视为只导出default属性,这与上面的默认导入语法相对应.