JavaScript 模块(ECMAScript 6+)提供了多种导出(export)模式,允许你根据不同的需求导出模块的功能。以下是一些常见的导出方式:
1. 命名导出(Named Exports)
命名导出允许你导出多个变量、函数或类,并且需要使用具体的名称来导入它们。
// -- module.js --
export const name = 'John';
export function greet() {
console.log('Hello!');
}
export class Animal {}
导入时需要使用相同的名称:
// -- app.js --
import { name, greet, Animal } from './module.js';
2. 默认导出(Default Exports)
每个模块只能有一个默认导出,它可以是任意类型(变量、函数、类或对象)。
// -- module.js --
export default function calculate() {
return 42;
}
导入默认导出时不需要使用大括号:
// -- app.js --
import calculate from './module.js';
3. 重命名导出(Renaming Exports and Imports)
在导出或导入时,你可以使用 as
关键字来重命名变量。
// -- module.js --
export const { name as userName, greet as sayHello } from './greetings.js';
导入时的重命名:
// -- app.js --
import { calculate as performCalculation } from './module.js';
4. 批量导出(Batch Exports)
你可以将多个命名导出一次性导出。
// -- module.js --
export * from './utils.js';
这将导出 ./utils.js
中定义的所有命名导出。
5. 导出默认和命名导出的组合
一个模块可以同时包含默认导出和命名导出。
// -- module.js --
const pi = 3.14;
const circle = (r) => Math.pow(r, 2) * pi;
export default pi;
export { circle };
6. 导出时解构(Export Destructuring)
你可以在导出时直接从其他模块解构并重命名导出的变量。
// -- module.js --
export { name as userName, greet as sayHello } from './greetings.js';
7. 导出时默认和命名的组合
在导出时,你可以将默认导出和命名导出组合在一起。
// -- module.js --
const config = { theme: 'light' };
export default config;
export { config as defaultTheme };
注意事项
- 确保你使用的是支持 ES6 模块的 JavaScript 环境或工具链。
- 导入和导出的语法需要匹配,否则会导致错误。
- 使用
export
关键字时,应该放在变量或函数声明之前。
通过这些不同的导出模式,你可以灵活地组织和重用代码,同时保持清晰的模块结构。