在 JavaScript 中,export 和 export default 是 ES6 模块系统中用于导出模块的两种不同语法。
export:
-
使用
export可以导出多个值,它们可以是变量、函数、类等。 -
模块可以导出多个
export。 -
导入时需要使用花括号
{}来引入具体的命名导出,除非使用* as语法导入模块的所有导出。 -
命名应该与导出时的名称相匹配,或者在导入时可以使用
as进行重命名。
// file1.js
export const myVar = 'some value';
export function myFunction() { /* ... */ }
export class MyClass { /* ... */ }
// file2.js
import { myVar, myFunction, MyClass } from './file1';
export default:
-
export default在一个模块中只能使用一次。 -
它是模块的“默认”导出。
-
导入一个
export default时不需要使用花括号{},而且可以给导入的变量任意命名。 -
这对于导出单体模块(一个模块只做一件事)或导出一个库的API时特别有用。
// file1.js
const myVar = 'some value';
export default myVar;
// file2.js
import anyNameYouWant from './file1';
总的来说,export 用于导出多个命名变量,而 export default 用于导出模块的默认值。你可以根据需要将两种导出方式结合使用:一个默认导出和多个命名导出。导入时,可以同时导入默认导出和其他命名导出。
// file1.js
export const var1 = 'value1';
export default function myFunction() { /* ... */ }
// file2.js
import myFunction, { var1 } from './file1';
在选择使用 export 或 export default 时,重要的是要考虑导入者的需要。如果你的模块提供了一系列相关的功能,则多个命名导出可能更有意义;如果它是一个专注于单一导出的模块,则 export default 更合适。