ES6:导入许多文件

ako*_*nsu 5 javascript ecmascript-6

我有一个脚本导入很多AMD模块并在每个模块上调用一个初始化方法:

define(['underscore', './mod0', ..., './modN'], function (_) {
    _.each(_.toArray(arguments).slice(1), function (m) {
        init(m);
    });
});
Run Code Online (Sandbox Code Playgroud)

我需要切换到ES6导入语法,我试图弄清楚是否可以从列表中导入模块,方式与我的AMD代码类似.我想避免疯狂,如:

import mod0 from './mod0';
...
import modN from './modN';

init(mod0);
...
init(modN);
Run Code Online (Sandbox Code Playgroud)

关于如何实现这一点的任何建议?谢谢!

Ber*_*rgi 5

是否可以从列表中导入模块?

不,不是没有显式调用你的模块加载器(无论哪个).使用import声明无法做到这一点.

关于如何实现这一点的任何建议?

eval 可能会这样做:-)

我建议使用两个模块:

// index.js
export mod0 from './mod0';
…
export modN from './modN';
Run Code Online (Sandbox Code Playgroud)

// init-all.js
import * as modules from './index'; // enumerable namespace

for (var moduleIdentifier in modules)
    init(modules[moduleIdentifier]);
Run Code Online (Sandbox Code Playgroud)

您可能只使用一个模块(将其自身作为模块命名空间对象导入)执行相同操作,但这肯定会是真正的疯狂.