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

rsb*_*rsb 2 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'
Run Code Online (Sandbox Code Playgroud)

即,客户端仅从顶级文件导入(因为子级别是实现细节 - 稍后可能会封装到单个缩小文件中(但在开发时是在多个文件中).

小智 5

你必须重新出口:

lib/main.js
import { Sub } from './foo/sub';
export { Sub };
Run Code Online (Sandbox Code Playgroud)

您可以像这样直接重新导出:

export { Sub } from './foo/sub';
Run Code Online (Sandbox Code Playgroud)

您可以在导出时重命名:

export { Sub as MySub } from './foo/sub';
Run Code Online (Sandbox Code Playgroud)

或者重新导出一切:

export * from './foo/sub';
Run Code Online (Sandbox Code Playgroud)