【问题标题】:Confusing es6 import -> export statement令人困惑的 es6 import -> export 语句
【发布时间】:2017-01-17 04:11:42
【问题描述】:

这是有效的 javascript 吗?它没有错误,并且似乎可以工作。

export {default as Chooser} from "./chooser";

我的解释是:

  1. import 来自"./chooser"default
  2. export #1 的结果 as Chooser

这是怎么回事?

【问题讨论】:

  • 如果有效,问题是什么?
  • Yes

标签: javascript node.js ecmascript-6 es6-modules


【解决方案1】:

这是有效的 JavaScript 吗?

是的。

这是怎么回事?

是的。

【讨论】:

    【解决方案2】:

    你的解释是正确的。

    importdefault 来自"./chooser"

    这是正确的。默认导出的是Chooser,在导入时,您必须使用as ...给它的名称:

    import { Chooser } from "./chooser";
    

    export #1 的结果为Chooser

    这也是正确的。名称Chooser 正在为默认设置一个新名称并将其导出。


    让我分解一下:

    export {
        default as Chooser
    } from "./chooser";
    

    它的作用是指定导出它的文件,default as Chooser 以名称 Chooser 导出默认值。现在,在导入时:

    import { Chooser } from "./chooser";
    

    您必须指定Chooser 才能导入,因为您实际上已命名为默认值。

    【讨论】:

    • 真的吗? 这也是正确的,但是模块默认导出Chooser,然后在导入时,import找到默认导出并导入。我认为模块以Chooser的名称导出它,它必须导入为import {Chooser} from './exports';。如果您想重新导出默认导出,我认为您需要在回答中说export {default} from './chooser;. Also, what does foo` 参考?
    • "可以作为默认导出的东西全局使用" 默认导出与“全局”有什么关系?在这种情况下这意味着什么?
    • @FelixKling 我不确定为什么我把它放进去,但它被删除了。感谢您指出这一点!
    • @torazaburo 我已经编辑了答案,感谢您的建设性批评!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多