ES6默认导出和命名导出

7
我正在尝试理解命名导出和默认导出。我有一个看似基本的要求,但我不知道如何设置。
我想能够同时导入:
//app.js
import Mod from './my-module'
import { funcA, funcB } from './my-module'

console.log('A', Mod.funcA(), funcA()); // A a a
console.log('B', Mod.funcB(), funcB()); // A a a

当我尝试时,我得到的最接近的方法如下:
//my-module.js
export function funcA() { return 'a'; };
export function funcB() { return 'b'; };

export default {funcA, funcB}

我的问题是我不想在默认导出中重新索引每个函数。我只想定义我的函数,然后确保它们被导出,这样我就可以以任何方式使用它们。
有什么建议吗?或者我必须使用import * as Mod from './my-module';吗?
2个回答

9
您可以省略默认导出,并使用import as语法:

您可以省略默认导出,并使用import as语法:

//app.js
import * as Mod from './my-module'
import { funcA, funcB } from './my-module'

console.log('A', Mod.funcA(), funcA()); // A a a
console.log('B', Mod.funcB(), funcB()); // B b b

//my-module.js
export function funcA() { return 'a'; };
export function funcB() { return 'b'; };

那么 import Mod from ’./my-module‘ 不应该按照上述方式使用吗? - mraxus
2
可以按照上述方式使用,但我认为在默认导出中重复 funcA/funcB 没有任何必要。 - CodingIntrigue

5

使用* as name一次性导入整个模块的内容:

import * as Mod from './my-module';

然后使用解构将它们分配给不同的常量:
const { funcA, funcB } = Mod;

要进行导出,只需使用命名导出:

export function funcA() { return 'a'; };
export function funcB() { return 'b'; };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接