从数组中导出常量

时间:2018-02-28 02:35:05

标签: javascript export

我在文件中有一长串导出的常量。这是一段摘录:

...
export const COUNTER_INCREMENT_REQUESTED = 'COUNTER_INCREMENT_REQUESTED';
export const COUNTER_INCREMENT_REQUESTED_ASYNC = 'COUNTER_INCREMENT_REQUESTED_ASYNC';
export const COUNTER_DECREMENT_REQUESTED = 'COUNTER_DECREMENT_REQUESTED';
export const COUNTER_DECREMENT_REQUESTED_ASYNC = 'COUNTER_DECREMENT_REQUESTED_ASYNC';
...

有没有办法创建一个数组并循环遍历它,导出每个值?

const events = [
  ...
  'COUNTER_INCREMENT_REQUESTED',
  'COUNTER_INCREMENT_REQUESTED_ASYNC',
  'COUNTER_DECREMENT_REQUESTED',
  'COUNTER_DECREMENT_REQUESTED_ASYNC',
  ...
]

for(event of events) {
  export ...
}

2 个答案:

答案 0 :(得分:1)

不,这是不可能的。

ES模块系统的一个显着特征是可以静态分析模块结构。这基本上可以防止以编程方式导出事物,因为它会打破静态可分析性。

答案 1 :(得分:0)

我确实通过将常量放入其自己的文件/模块中来管理变体,然后将它们导入模块并在那里循环它们。

constants.js

export const COUNTER_INCREMENT_REQUESTED = 'COUNTER_INCREMENT_REQUESTED';
export const COUNTER_INCREMENT_REQUESTED_ASYNC = 'COUNTER_INCREMENT_REQUESTED_ASYNC';
export const COUNTER_DECREMENT_REQUESTED = 'COUNTER_DECREMENT_REQUESTED';
export const COUNTER_DECREMENT_REQUESTED_ASYNC = 'COUNTER_DECREMENT_REQUESTED_ASYNC';

index.js

import * as actions from './constants';
...
let eventEmitters = {};
for(const action in actions ) {
  ...
}
export default eventEmitters;