2017-09-16 104 views
2

有什么方法可以在ES6中使用回路(或其他回路)导入和导出多个文件?ES6在回路中导入

const moduleNames = ['NumberUtils', 'StringUtils', 'ArrayUtils', 'MyModule', 'AnotherModule', 'BaseModule'] 

let modules = {} 

for (const moduleName of moduleNames) { 
    import module from './' + moduleName 
    modules.moduleName = module 
} 

export modules 

没有环路我必须写:

import NumberUtils from './NumberUtils' 
import StringUtils from './StringUtils' 
import ArrayUtils from './ArrayUtils' 
import MyModule from './MyModule' 
import AnotherModule from './AnotherModule' 
import BaseModule from './BaseModule' 

export { 
    NumberUtils, 
    StringUtils 
    ArrayUtils 
    MyModule 
    AnotherModule 
    BaseModule 
} 
+0

你可以做'从“./NumberUtils”出口{默认为NumberUtils};'仅供参考,这使得这些类型的列表更容易保持。为什么添加一行代码比向数组添加项目更困难? – loganfsmyth

回答

1

对于多个导入文件,我发现这个解决方案:

const files = require.context('../myFolder', true, /(Module|Utils)\.js$/) 
1

之一的ES模块的主要特点是,他们可以静态分析。为此import声明如下strict syntax - export也是如此。一个“没有循环”的片段是它必须完成的方式。

这可以准确计算出IDE和工具中的模块导入和导出。例如,这对于树木摇晃很有用。

1

我认为更好更清晰的方法是创建一个索引文件,然后在一次导入中导入多个组件。

//index.js 
import PopUp from './PopUp'; 
import ToggleSwitch from './ToggleSwitch'; 

export { 
    PopUp, 
    ToggleSwitch 
}; 

//app.js 

import { PopUp, ToggleSwitch } from './components';