javascript - 是否可以在 ES2015 中导出 "import * as"的结果?

标签 javascript ecmascript-6 es6-module-loader

在 ES2015 中,可以将整个模块作为对象导入,其属性是模块的导出:

import * as name from 'module';

我发现这对于命名空间非常有用,并且一直使用它。

也可以重新导出其他模块的导出:
export { name } from 'module'; // selectively
export * from 'other-module'; // indiscriminately

现在我正在尝试以这种风格编写一个具有命名空间的库。在顶层模块中收集所有内容的直观方式如下:
export * as name from 'module';

但这似乎不起作用; Babel 和 Rollup 都拒绝它。

我可以将模块作为对象导入,通过迭代其键创建一个克隆,然后导出它,但它只是一个普通的旧动态对象,所以我将失去 Rollup 提供的巨大优势。

那么,使用声明性模块语法真的没有办法做到这一点吗?在我看来,这似乎没有任何借口。

最佳答案

不,这在 ES6 中被忽略了。有is a stage 1 proposal但是,添加这些和rollup will consider implementing it .

在那之前,您将需要使用两个声明和一个本地绑定(bind),尽管不需要克隆对象:

import * as name from 'module';
export { name };

关于javascript - 是否可以在 ES2015 中导出 "import * as"的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33928698/

相关文章:

javascript - 哪些浏览器支持 ECMAScript 6 的导入和导出语法?

Javascript Promise、then 和 catch 方法的返回 Promise

javascript - babel 与express js :avoid relative path imports

javascript - 浏览器将如何处理 ES6 导入/导出语法

javascript - 随机失败的聚合物网络组件测试

javascript - 如何为功能性 React 组件 Prop 实现解构分配?

javascript - 使用效果对原生 React-navigation 过渡使用react

javascript - 鼠标悬停时 jQuery 自动滚动暂停

javascript - 可编辑传播

javascript - 在 Javascript 中,如何在父事件处理程序中防止子元素出现默认值