js中的export 和export default,有啥区别

280 阅读1分钟

在 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 更合适。