让我们从一个例子开始:
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] 删除。
我来说两句