在 JavaScript 模块中,export
和 export default
是用来导出模块中的内容(变量、函数、类等)的关键字,它们之间有一些区别:
1.export
: export
关键字用于将声明的变量、函数或类导出,可以导出多个值,需要在导入时使用对应的名称来引用。// module.js
export const a = 1;
export function hello() {
return "Hello!";
}
// 可以通过解构赋值导入
import { a, hello } from './module.js';
2.export default
: export default
用于导出模块的默认值,一个模块只能有一个默认导出,不需要使用花括号语法,可以为任意的值,包括函数、类、对象等。
// module.js
const a = 1; export default a;
// 可以直接导入默认值
import myDefault from './module.js';
3.export *
是 JavaScript 模块中的一种语法,用于将一个模块中的所有导出内容重新导出到另一个模块中。这个语法允许在一个模块中重新导出另一个模块的所有内容,而不必逐个重新导出每个内容。
举个例子,假设我们有一个模块 module1.js
:
// module1.js
export const a = 1;
export function hello() {
return "Hello!";
}
export class MyClass {
// class definition
}
现在,我们可以在另一个模块中使用 export *
将 module1.js
中的所有导出内容重新导出:
// module2.js
export * from './module1.js';
这样,module2.js
中就会重新导出 module1.js
中的所有导出内容,包括常量 a
、函数 hello
和类 MyClass
。相当于在 module2.js
中也可以通过相同的名称来访问这些导出的内容,而不必重新定义或重命名它们。
总结一下:
- 使用
export
导出的值需要通过对应的名称来导入。 - 使用
export default
导出的值可以通过任意的名称来导入,并且一个模块只能有一个默认导出。 - 需要注意的是,
export *
只能导出其他模块中通过export
导出的内容,不能导出默认导出。如果想要重新导出默认导出,可以通过export { default } from './module.js';
的形式单独导出默认导出。
在实际应用中,通常情况下我们会在一个模块中使用 export
导出多个值,而在另一个模块中使用 export default
导出默认值。