让我们从一个例子开始:
import renewCreepLife from '../tasks/renew_creep_life';
import harvestEnergy from '../tasks/harvest_energy';
import pickupEnergy from '../tasks/pickup_energy';
import storeEnergy from '../tasks/store_energy';
import upgradeController from '../tasks/upgrade_controller';
const taskFuncs = {
[Tasks.RENEW]: renewCreepLife,
[Tasks.PICKUP_ENERGY]: pickupEnergy,
[Tasks.HARVESTING]: harvestEnergy,
[Tasks.STORING]: storeEnergy,
[Tasks.UPGRADING]: upgradeController,
};
Run Code Online (Sandbox Code Playgroud)
有没有办法简化这个,以便我不创建这些毫无意义的临时变量名称?就像是:
// incorrect but desired syntax
const taskFuncs = {
[Tasks.RENEW]: import '../tasks/renew_creep_life',
};
Run Code Online (Sandbox Code Playgroud)
注意,每个文件都在使用 export default function()
Cod*_*gue 10
不.该import语句没有返回值,因此它永远不能用于直接赋值给那样的变量.
此外,import和export必须在顶层声明.
这对ES6来说是不可能的,并且可能在可预见的未来(ES2016 +)保持这种状态.
但是,有一个HTML模块加载器规范正在处理,它允许您加载模块,如:
System.import('../tasks/renew_creep_life')
.then(renewCreepLife => {
});
Run Code Online (Sandbox Code Playgroud)
但由于它是基于承诺的,你仍然无法将其内联写入类似的对象中.
如果你想要同步加载,NodeJS' require可能是你最接近的.有浏览器实现,如Webpack/Browserify /等.试图模仿行为:
const taskFuncs = {
[Tasks.RENEW]: require('../tasks/renew_creep_life').default
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2631 次 |
| 最近记录: |