📌 核心知识点:
Node.js 中每个文件都是一个独立的模块,使用 require 引入其他模块,用 module.exports 导出内容。
🧱 为什么需要模块?
想象你写一个大程序,所有代码都堆在一个文件里:
- 难以阅读
- 不好维护
- 多人协作困难
👉 所以我们需要“拆分”代码 —— 就像把一本书分成章节。
Node.js 的解决方案就是:模块化(Module System)
📁 模块的基本规则:
- 每一个
.js文件就是一个模块 - 模块内部的变量、函数默认是私有的,外部无法访问
- 如果你想让别人用你的代码,就要用
module.exports导出 - 如果你想用别人的代码,就用
require引入
🧪 动手实践:创建两个文件
步骤 1:创建 math.js —— 一个数学工具模块
// math.js
function add(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
// 把这两个函数导出,供别人使用
module.exports = {
add: add,
multiply: multiply
};
💡 解释:module.exports 是 Node.js 提供的对象,用来指定这个文件要对外暴露的内容。
✅ 简写小技巧:ES6 支持属性简写,所以上面也可以写成:
module.exports = { add, multiply };
步骤 2:创建 app.js —— 主程序,引入并使用它
// app.js
const math = require('./math'); // 注意:必须加 './' 表示当前目录下的文件
console.log(math.add(2, 3)); // 输出: 5
console.log(math.multiply(4, 5)); // 输出: 20
📌 关键点:
require('./math')不需要写.js后缀,Node.js 会自动查找。./表示相对路径,说明不是内置模块也不是第三方模块。
步骤 3:运行程序
在终端执行:
node app.js
输出结果:
5
20
🎉 成功!你已经实现了模块之间的通信!
🔧 补充:三种 require 的类型
| 类型 | 示例 | 说明 |
|---|---|---|
| 自定义模块 | require('./my-module') | 自己写的文件,必须带路径 |
| 内置模块 | require('fs') | Node.js 自带的,如 fs, path, http 等 |
| 第三方模块 | require('express') | npm 安装的库(后面会讲) |
✅ 小结一句话:
在 Node.js 中,用 module.exports 导出功能,用 require 引入别人的功能,实现代码复用和组织。
📬 下一课预告:
第 5 课:CommonJS 模块规范 —— 理解 require 的工作原理与同步加载机制