在JavaScript/TypeScript模块系统中,有两种主要的导出方式:命名导出(Named Export)和默认导出(Default Export)。每种方式都有其特定的使用场景和语法规则。
命名导出允许你从一个模块中导出多个变量、函数或类,每个都有其特定的名称。
默认导出允许你从一个模块中导出一个默认值。每个模块只能有一个默认导出。
- 导入语法:
- 命名导出:import { name } from './module'(使用花括号)
- 默认导出:import name from './module'(不使用花括号)
- 名称一致性:
- 命名导出:导入时必须使用与导出时相同的名称(除非使用别名)
- 静态分析:
- 命名导出:编译器可以更好地进行静态分析和摇树优化(tree-shaking)
- 默认导出:对于导出对象,静态分析较难,不利于摇树优化
- 一致性原则:在项目中保持导出风格的一致性
- 合理选择:根据模块的性质和用途选择合适的导出方式
- 避免混用:虽然可以在同一模块中混合使用两种导出,但容易造成混淆
命名导出示例
// math.ts
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
export const multiply = (a, b) => a * b;
// 使用
import { add, multiply } from './math';
console.log(add(2, 3)); // 5
通过理解这两种导出方式的区别,开发者可以更好地组织代码结构,提高代码的可维护性和可读性。