背景:
1、在编写代码的时候,build打包报警告,使用GPT询问之后得到命名导出和默认导出的区别,因此有想法去了解下命名导出和默认导出的用法区别。
export 'default' (imported as 'store') was not found in '@/content-scripts/store' (possible exports: store)
结论:
1. 命名导出(Named Export)
- 使用
import { store }
是导入一个 命名导出 的模块成员。 - 命名导出允许从一个文件中导出多个不同的成员,每个成员都需要在导入时用花括号指定其名字。
命名导出示例:
store.js
// 导出多个命名成员
export const store = {
// store 的内容
};
export const anotherStore = {
// anotherStore 的内容
};
导入方式:
// 使用花括号导入指定的命名导出
import { store, anotherStore } from '@/content-scripts/store';
在这种情况下,store
和 anotherStore
是 明确命名的导出,并且可以同时导入多个命名导出。
2. 默认导出(Default Export)
- 使用
import store
是导入一个 默认导出 的模块成员。 - 默认导出文件中只能有一个导出项,不需要花括号,并且导入时可以自定义导入名称(即导入时的名字不必与导出时的名字相同)。
默认导出示例:
store.js
:
// 仅导出一个默认成员
const store = {
// store 的内容
};
export default store;
导入方式:
// 不使用花括号,并且可以重命名导入的内容
import store from '@/content-scripts/store';
在这种情况下,store
是 默认导出 ,文件中只能有一个默认导出,而且导入时可以随意命名(例如你可以用 import myStore from '@/content-scripts/store'
这样的导入)。
3. 关键区别总结
import { store }
: 用于导入 命名导出,并且必须与导出的名字完全一致,且可以同时导入多个命名成员。import store
: 用于导入 默认导出,只需导出一个成员,导入时可以重命名。