ES6&x2B;javascript模块导出选项

ES6&x2B;javascript模块导出选项,javascript,syntax,module,export,ecmascript-6,Javascript,Syntax,Module,Export,Ecmascript 6,我看到ES6模块的公共导出是通过以下两种方式完成的: // method 1 export var getAnswer = function () { return 'forty two'; }; // method 2 export default function () { return 'forty two'; }; 这两者都有效吗 如果是,为什么它们都存在 使用ES6语法的模块导出是否有其他有效选项 我很惊讶我没能用我的谷歌搜索引擎找到答案。我只关心ES6模块,而不关心CommonJ

我看到ES6模块的公共导出是通过以下两种方式完成的:

// method 1
export var getAnswer = function () { return 'forty two'; };

// method 2
export default function () { return 'forty two'; };
  • 这两者都有效吗
  • 如果是,为什么它们都存在
  • 使用ES6语法的模块导出是否有其他有效选项

  • 我很惊讶我没能用我的谷歌搜索引擎找到答案。我只关心ES6模块,而不关心CommonJS、RequireJS、AMD、Node等。

    这两个模块都是有效的

    方法1提供了命名的导出。这里的关键是,您可以导出多个内容。应使用此选项,而不是导出具有多个属性的对象。导入带有命名导出的模块时,请使用
    import{a,b}from c

    方法2提供默认导出。只能有一个默认导出。这主要用于导出单个对象,如
    ,或单个
    函数
    ,您希望在没有任何额外支持的情况下使用这些对象。使用默认导出导入模块时,请使用
    import d from c

    请注意,您可以同时使用这两种方法!因此,如果您有一个主要功能,其中包含少量偶尔使用的帮助程序,则可以
    导出帮助程序,并
    导出默认帮助程序。当您导入一个模块并且需要两种类型的导出时,请使用
    import d,{a,b}from c

    另一个选项是,您可以通过在模块末尾列出它们来获得命名的导出,如:
    export{a,b,c}
    。您还可以将它们重命名为
    导出{a为$a,b为c}

    我从中获得了所有这些信息,这是我能够找到的最新es6模块信息的最佳来源

  • 这两者都有效吗
  • 否,
    export函数(){return answer;}无效,要么使用默认值,要么向该函数声明添加名称

  • 如果是,为什么它们都存在
  • 他们没有:)

  • 使用ES6语法的模块导出是否有其他有效选项

  • 你可以在这里看到很多有效的选项:

    一年或更晚,这里是我在这个主题上找到的最好的信息

    出口有4种类型。下面是每种方法的使用示例,以及使用它们的一些导入:

    导出语法 导入语法

    我认为区别在于
    import x from y
    vs
    import{x}from y
    请参见和伟大的列表,但您能否详细介绍每种类型的功能以及区别是什么?这是一个极好的主意。我想对每一个解释都进行全面的阐述,但我已经有一段时间没有接触ES6了,所以我有点生疏了。要等到我回到ES6的土地上,我才能确定我在说什么。你是最棒的
    // default exports
    export default 42;
    export default {};
    export default [];
    export default (1 + 2);
    export default foo;
    export default function () {}
    export default class {}
    export default function foo () {}
    export default class foo {}
    
    // variables exports
    export var foo = 1;
    export var foo = function () {};
    export var bar;
    export let foo = 2;
    export let bar;
    export const foo = 3;
    export function foo () {}
    export class foo {}
    
    // named exports
    export {};
    export {foo};
    export {foo, bar};
    export {foo as bar};
    export {foo as default};
    export {foo as default, bar};
    
    // exports from
    export * from "foo";
    export {} from "foo";
    export {foo} from "foo";
    export {foo, bar} from "foo";
    export {foo as bar} from "foo";
    export {foo as default} from "foo";
    export {foo as default, bar} from "foo";
    export {default} from "foo";
    export {default as foo} from "foo";
    
    // default imports
    import foo from "foo";
    import {default as foo} from "foo";
    
    // named imports
    import {} from "foo";
    import {bar} from "foo";
    import {bar, baz} from "foo";
    import {bar as baz} from "foo";
    import {bar as baz, xyz} from "foo";
    
    // glob imports
    import * as foo from "foo";
    
    // mixing imports
    import foo, {baz as xyz} from "foo";
    import foo, * as bar from "foo";
    
    // just import
    import "foo";