- Exports 是 Node.js 模块化的核心机制,它允许模块暴露其内部代码和其他模块可访问的变量。
- 当一个模块被加载时,它会创建一个 exports 对象,该对象包含要导出的变量和函数。
- 其他模块可以通过 require() 方法导入此 exports 对象。
二、导出对象的不同方法
1. 直接赋值
- 最直接的方法是将要导出的对象直接分配给 exports。例如:
module.exports = {
name: "John",
age: 30
};
2. Object.assign()
- 可以使用 Object.assign() 方法将一个或多个对象合并到 exports 中。例如:
Object.assign(module.exports, {
name: "John",
age: 30
});
3. exports.propertyName
- 也可以通过 exports 对象的属性名来导出变量。例如:
module.exports.name = "John";
module.exports.age = 30;
三、选择导出方法的指南
- 直接赋值: 当导出一个对象时,这是最简单的方法。
- Object.assign(): 当需要合并多个对象或从其他模块导入变量时,可以使用此方法。
- exports.propertyName: 当需要以更具描述性的方式导出单个变量时,可以使用此方法。
四、解构导出
- 可以在导入模块时使用解构来选择要导入的特定属性。例如:
const { name, age } = require("./user.js");
五、命名导出
- Node.js 还支持命名导出,允许以更组织和可读的方式导出多个对象。语法为:
module.exports = {
name: "John",
age: 30,
getCity: () => "London"
};
- 导入模块时,可以像这样使用命名导出:
const { name, age, getCity } = require("./user.js");
六、默认导出
- 还可以使用 default 关键字来设置模块的默认导出。语法为:
export default {
name: "John",
age: 30
};
- 导入模块时,可以将其分配给一个变量:
const user = require("./user.js");
七、总结
掌握 Node.js 中 exports 的不同方法对于有效组织和共享模块代码至关重要。了解何时以及如何在各种情况下使用直接赋值、Object.assign()、exports.propertyName、解构导出、命名导出和默认导出将有助于编写清晰、可维护的代码。