我想以编程方式为模块生成导出,这在es6中是否可行?
这些方面的东西:
const ids = ['foo', 'bar', 'baz'];
ids.forEach(id => {
export const [id.toUpperCase()] = id;
});
答案 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;