ES6导出默认功能

sis*_*imh 16 javascript ecmascript-6 babeljs

我可以为每个文件导出多个函数吗?看起来当我这样做时,第二个功能是第一个功能,

例如:在my index.js文件中:

export default function aFnt(){
    console.log("function a");
}
export default function bFnt(){
    console.log("function b");
}
Run Code Online (Sandbox Code Playgroud)

然后当我在我的文件中导入它时:

import aFnt from "./index";

console.log("aFnt : ",aFnt);
Run Code Online (Sandbox Code Playgroud)

console.log的结果是bFnt

究竟是什么情况呢?我是否必须为每个功能创建一个新文件?这不是很实用,任何解决方案或解决方法?

小智 38

如果要导入命名函数,madox2的答案完全有效.

如果您仍想导入默认值,还有另一种技巧:

function a() {}

function b() {}

export default { a, b }
Run Code Online (Sandbox Code Playgroud)

并在导入时:

import myObject from './index.js';

myObject.a(); // function a
myObject.b(); // function b
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!

  • 将对象导出为默认值是ES6中的反模式.如果你需要一个带有导出的对象,你应该使用命名的导出,并从'./index.js';`执行`import*as myObject.它实现了相同的目标,但使用静态分析和死代码消除的工具可以更好地工作. (6认同)

mad*_*ox2 15

您可以使用命名导出而不是默认导出:

export function aFnt(){
    console.log("function a");
}
export function bFnt(){
    console.log("function b");
}
Run Code Online (Sandbox Code Playgroud)

并导入它像:

import {aFnt, bFnt} from "./index";
Run Code Online (Sandbox Code Playgroud)