生成es6模块导出

时间:2016-03-08 18:35:19

标签: javascript module ecmascript-6

我想以编程方式为模块生成导出,这在es6中是否可行?

这些方面的东西:

const ids = ['foo', 'bar', 'baz'];

ids.forEach(id => {
    export const [id.toUpperCase()] = id;
});

2 个答案:

答案 0 :(得分:7)

不,不是。需要在ES6模块中静态分析出口和进口。

这个非顶级export声明不仅是语法错误,而且还是您尝试使用动态名称声明变量。括号表示法仅保留用于计算属性

因此,如果您要以编程方式生成模块导出,则需要动态生成模块源文本(作为构建过程的一部分)。

答案 1 :(得分:1)

您可以导出具有动态键的对象,但随后在导入后 必须对其进行销毁。

const ids = ['foo', 'bar', 'baz'].reduce(...code to reduce to what you want);
export default ids; // { FOO: 'foo', BAR: 'bar', BAZ: 'baz' }
import ids from './ids'
const { BAR } from ids;