Import ES6模块:可传递地导出符号(即,从导入的文件)

Import ES6模块:可传递地导出符号(即,从导入的文件),import,ecmascript-6,Import,Ecmascript 6,假设我正在创建一个包含多个文件的ES6库,但有一个包含所有顶级定义的根文件。我如何才能实现以下示例: lib/foo/sub.js export class Sub{} lib/main.js import { Sub } from './foo/sub' client.js # This doesn't work. import { Sub } from 'lib/main' 也就是说,客户端只从顶层文件导入(因为子层是实现细节——稍后可能会封装到一个缩小的文件中(但在开发时是在多个文件

假设我正在创建一个包含多个文件的ES6库,但有一个包含所有顶级定义的根文件。我如何才能实现以下示例:

lib/foo/sub.js
export class Sub{}

lib/main.js
import { Sub } from './foo/sub'

client.js
# This doesn't work.
import { Sub } from 'lib/main'
也就是说,客户端只从顶层文件导入(因为子层是实现细节——稍后可能会封装到一个缩小的文件中(但在开发时是在多个文件中)。

您必须重新导出:

lib/main.js
import { Sub } from './foo/sub';
export { Sub };
您可以像这样直接重新导出:

export { Sub } from './foo/sub';
导出时可以重命名:

export { Sub as MySub } from './foo/sub';
或转口所有物品:

export * from './foo/sub';

感谢@torazaburo的快速响应。哪些环境不支持从导出?我很保守,记得es6模块transpiler不支持这一点,但我发现它现在被弃用,取而代之的是babel+世界语。您忘了将导出*作为来自./utils'的utils,这也可能非常重要有用。@LeonidBeschastny该语法记录在哪里?我也不知道它是什么意思。在babel中,该语法在
as
处生成语法错误。