【问题标题】:ES6 Modules: transitively exporting symbols (i.e., from imported files)ES6 模块:传递导出符号(即,从导入的文件)
【发布时间】:2015-11-13 13:53:27
【问题描述】:

假设我正在创建一个包含多个文件的 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'

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

【问题讨论】:

    标签: import ecmascript-6


    【解决方案1】:

    你必须重新出口:

    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 的超快速响应。
    • 哪些环境不支持export … from
    • 我很保守,记得 es6-module-transpiler 不支持它,但我发现它现在已被 babel+esperanto 弃用。
    • 你忘了说export * as utils from './utils',它也可能很有用。
    • @LeonidBeschastny 该语法记录在哪里?我也无法弄清楚这意味着什么。在 babel 中,该语法会在 as 处生成语法错误。
    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 2015-07-07
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多