ESM 中的 export * from写法
文章类型:Javascript
发布者:hp
发布时间:2025-04-18
我们在模块导出时候,有多种选择,那么export * from方式有什么不同呢?
1:export * from "a.js" 是一种模块重导出的语法,
2:批量重导出,会将所有命名导出(named exports)重新导出到当前模块
3:不包含默认导出,不会重导出默认导出(export default),如要导出需显示处理
1:命名冲突处理:通过显示重命名解决
export { a as aFromModule } from "./a.js";
2:顺序不影响覆盖:ESM不允许同名导出存在,跟位置顺序无关
3:多模块聚合:常用于多个模块导出到一个入口文件
// index.js
export * from "./a.js";
export * from "./b.js";
// a.js
export const name = "a";
export function log() { console.log(name); }
// current.js
export * from "./a.js"; //name和log
// a.js
export default "default";
export const key = "value";
// current.js
export * from "./a.js"; // 仅导出 key
export { default as aDefault } from "./a.js"; // 显式导出默认
1:简化模块的批量重导出,适合模块组织和代码复用
2:仅重导出命名导出,默认导出需要单独处理
3:避免命名冲突,苟泽导致静态错误
4:常用于创建模块入口或库的公共API