在ES2015中,可以将整个模块导入为其属性为模块导出的对象:
import * as name from 'module';
我发现这对于命名空间非常有用,并且一直使用它。
也可以重新导出其他模块的导出:
export { name } from 'module'; // selectively
export * from 'other-module'; // indiscriminately
现在我正在尝试用这种风格编写一个带有命名空间的库。收集顶层模块中所有内容的直观方式如下:
export * as name from 'module';
但这似乎不起作用; Babel和Rollup都拒绝了它。
我可以将模块作为对象导入,通过迭代其键来创建克隆,然后导出它,但那时它只是一个普通的旧动态对象,所以我会失去伟大的Rollup提供的优势。
那么,是否真的无法使用声明性模块语法执行此操作?在我看来,没有任何借口。
答案 0 :(得分:14)
不,这只是在ES6中错过了。但是is a stage 1 proposal要添加这些内容,rollup will consider implementing it。
在此之前,您需要使用两个声明和一个本地绑定,尽管不需要克隆该对象:
import * as name from 'module';
export { name };