我有一个脚本可以导入很多AMD模块并在每个模块上调用一个初始化方法:
define(['underscore', './mod0', ..., './modN'], function (_) {
_.each(_.toArray(arguments).slice(1), function (m) {
init(m);
});
});
我需要切换到ES6导入语法,我试图找出是否可以从列表中导入模块,方式与我的AMD代码类似。我想避免疯狂,如:
import mod0 from './mod0';
...
import modN from './modN';
init(mod0);
...
init(modN);
有关如何实现这一目标的任何建议? 谢谢!
答案 0 :(得分:5)
是否可以从列表中导入模块?
不,不是没有显式调用你的模块加载器(无论哪个)。使用import
声明无法做到这一点。
关于如何实现这一目标的任何建议?
eval
可能会这样做: - )
我建议使用两个模块:
// index.js
export mod0 from './mod0';
…
export modN from './modN';
// init-all.js
import * as modules from './index'; // enumerable namespace
for (var moduleIdentifier in modules)
init(modules[moduleIdentifier]);
你可能只对一个模块(将自身作为模块命名空间对象导入)执行相同的操作,但这肯定会是真正的疯狂。