我有一个脚本,可以导入很多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);
关于如何做到这一点的任何建议?
谢谢!
最佳答案
不,并非没有显式调用您的模块加载器(无论是哪个)。无法使用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]);
您可能只用一个模块(将自身导入为模块 namespace 对象)就可以做同样的事情,但是那肯定是真正的疯狂。