1. 命名导出(ES6)
命名导出使用 ES6 引入,提供更清晰和简洁的语法。它使用 export
关键字来导出变量、函数或对象:
// module.js
export const myVariable = "value";
export function myFunction() { ... }
2. 默认导出(ES6)
默认导出用于导出单个值作为模块的默认导出。它使用 default
关键字:
// module.js
export default {
myProperty: "value"
};
3. 使用单一 exports 对象
在模块中,只使用一个 exports
对象。避免直接修改 exports
,而是使用以下方式:
// module.js
exports.myVariable = "value";
exports.myFunction = function() { ... };
4. 使用对象 destructuring(ES6)
ES6 中的对象 destructuring 允许从对象直接导入属性:
// app.js
import { myVariable, myFunction } from "./module";
5. 避免导出私有成员
私有成员(以 _
开头)不应通过 exports
对象导出,因为它们不应该在模块外部访问。
6. 避免循环引用
模块之间避免循环引用,即一个模块导入另一个模块,同时另一个模块又导入第一个模块。这可能会导致内存泄漏。
7. 使用 require()
和 exports
的一致性
在整个项目中使用 require()
和 exports
的一致方法。例如,始终使用 exports
对象来导出,或者始终使用命名导出。
8. 将 exports
对象视为不可变
将 exports
对象视为不可变的,并避免对其进行直接修改。这样做可以防止意外更改导出值。
9. 避免在 exports
对象上使用 __esModule
在导出对象上使用 __esModule
标志会导致与其他模块的兼容性问题。避免使用它。
10. 使用模块类型(Typescript)
Typescript 中的模块类型可以帮助确保导出值的类型正确,并避免潜在错误。