导出值
要导出值,可以使用 exports
对象的属性。例如:
// my-module.js
exports.myFunction = function() {
// ...
};
exports.myVariable = 123;
这将导出 myFunction
函数和 myVariable
变量,其他模块可以使用 require()
导入它们。
命名导出
虽然使用 exports
对象属性可以导出值,但更推荐使用 ES6 的命名导出方式。这提供了更好的代码组织和模块清晰度。
// my-module.js
export function myFunction() {
// ...
}
export const myVariable = 123;
默认导出
当一个模块只有一个主要导出值时,可以使用默认导出。这意味着模块导入时无需解构导入的模块对象。
// my-module.js
export default function myFunction() {
// ...
}
导出类型
除了导出值之外,还可以导出类型。这有助于提供代码提示和类型检查。
// my-module.js
export type MyType = {
// ...
};
避免命名冲突
在大型项目中,避免导出名称冲突很重要。使用命名导出或默认导出可以显式设置导出的名称,从而防止冲突。
避免循环依赖
循环依赖是指两个或更多模块相互导入的情况。这会导致加载错误或未定义的引用。为了避免循环依赖,应使用前向引用或代理模块。
使用模块
导入其他模块时,可以通过以下方式访问导出的值:
- 解构导入:
const { myFunction, myVariable } = require("./my-module");
- 默认导入:
const myFunction = require("./my-module").default;
- 命名导入:
const { myFunction } = require("./my-module");
最佳实践
- 使用命名导出以提高代码清晰度。
- 考虑使用默认导出以简化导入。
- 出口类型以提供类型安全。
- 避免命名冲突以防止错误。
- 避免循环依赖以确保加载正确。