导入对象?

让我们从一个例子开始:

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,
};

有什么方法可以简化此操作,以便不创建这些毫无意义的临时变量名?就像是:

// incorrect but desired syntax
const taskFuncs = {
    [Tasks.RENEW]: import '../tasks/renew_creep_life',
};

注意,每个文件都在使用 export default function()

编码阴谋

否。该import语句没有返回值,因此永远不能将其直接分配给这样的变量。

此外,import并且export必须在顶层声明。

ES6无法做到这一点,并且在可预见的未来(ES2016 +)中可能会保持这种状态。

但是,正在处理HTML模块加载程序规范,该规范允许您加载以下模块:

System.import('../tasks/renew_creep_life')
.then(renewCreepLife => {

});

但是由于它是基于promise的,因此您仍然不能仅将其内联地写在这样的对象中。

如果要同步加载,NodeJS'require可能是最接近的。有浏览器实现,例如Webpack / Browserify / etc。试图模仿行为:

const taskFuncs = {
    [Tasks.RENEW]: require('../tasks/renew_creep_life').default
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章