目录
[1. exports 对象介绍](#1. exports 对象介绍)
[2. 基础示例:使用 exports 导出对象](#2. 基础示例:使用 exports 导出对象)
[3. 在另一个文件中使用 require 进行导入](#3. 在另一个文件中使用 require 进行导入)
[4. 运行程序](#4. 运行程序)
[5. exports 的限制](#5. exports 的限制)
[6. 其他 exports 使用方式](#6. 其他 exports 使用方式)
[7. 结论](#7. 结论)
1. exports
对象介绍
在 Node.js 中,exports
是 module.exports
的一个引用(别名),用于导出模块的内容。
主要特点:
exports
和module.exports
最初指向同一个对象。- 只能使用
exports.属性 = 值
形式来添加属性,不能直接赋值exports = {...}
,否则会断开与module.exports
的关联。 - 推荐使用
module.exports
,因为它更清晰,避免exports
赋值带来的问题。
2. 基础示例:使用 exports
导出对象
创建一个 math.js
文件,使用 exports
对象导出数学运算函数。
文件名:math.js(JavaScript)
javascript
// math.js
exports.add = (a, b) => a + b;
exports.subtract = (a, b) => a - b;
exports.multiply = (a, b) => a * b;
exports.divide = (a, b) => (b !== 0 ? a / b : "Error: Division by zero");
3. 在另一个文件中使用 require
进行导入
创建 app.js
文件,并使用 require
来引入 math.js
模块。
文件名:app.js(JavaScript)
javascript
// app.js
const math = require("./math"); // 引入 math.js 模块
console.log("加法 5 + 3 =", math.add(5, 3));
console.log("减法 10 - 4 =", math.subtract(10, 4));
console.log("乘法 6 * 7 =", math.multiply(6, 7));
console.log("除法 20 / 5 =", math.divide(20, 5));
console.log("除法 10 / 0 =", math.divide(10, 0)); // 测试除数为0的情况
4. 运行程序
在终端(Terminal 或 CMD)中运行:
bash
node app.js
运行结果:
bash
加法 5 + 3 = 8
减法 10 - 4 = 6
乘法 6 * 7 = 42
除法 20 / 5 = 4
除法 10 / 0 = Error: Division by zero
5. exports
的限制
错误示例(不建议使用):
javascript
// math.js
exports = { // ❌ 这样会导致导出失败
add: (a, b) => a + b,
subtract: (a, b) => a - b
};
原因: 这样做会让 exports
变量指向一个新对象,但 module.exports
仍然指向原始对象,导致 require('./math')
取不到新赋值的对象。
6. 其他 exports
使用方式
示例1:导出单个函数
文件名:greet.js(JavaScript)
javascript
// greet.js
exports.greet = function(name) {
return `Hello, ${name}!`;
};
文件名:app.js(JavaScript)
javascript
// app.js
const greetModule = require("./greet");
console.log(greetModule.greet("鼠鼠"));
运行结果:
bash
Hello, 鼠鼠!
示例2:导出类
文件名:Person.js(JavaScript)
javascript
// Person.js
exports.Person = class {
constructor(name, age) {
this.name = name;
this.age = age;
}
introduce() {
return `My name is ${this.name}, I am ${this.age} years old.`;
}
};
文件名:app.js(JavaScript)
javascript
// app.js
const { Person } = require("./Person");
const person1 = new Person("Alice", 25);
console.log(person1.introduce());
const person2 = new Person("Bob", 30);
console.log(person2.introduce());
运行结果:
javascript
My name is Alice, I am 25 years old.
My name is Bob, I am 30 years old.
7. 结论
exports
是module.exports
的一个引用,默认指向相同的对象。- 只能使用
exports.属性 = 值
形式,不能直接exports = {...}
赋值,否则会失去作用。 - 一般推荐使用
module.exports
,避免exports
赋值带来的问题。 - 适用于导出多个函数或对象时使用。
希望这篇文章能帮助你理解 exports
的用法!