一、什么是内置模块?
Node.js 内置模块是 Node.js 运行时自带的、无需额外安装即可使用的核心功能模块。这些模块提供了基础的系统功能,如文件操作、网络通信、进程管理等,是 Node.js 开发的基础工具。
与需要通过 npm 安装的第三方模块不同,内置模块可以直接通过 require() 函数加载使用:
const fs = require('fs'); // 文件系统模块 const http = require('http'); // HTTP 模块
二、常用内置模块概览
| 模块名称 | 描述 | 常用类/方法 | 典型用途 |
|---|---|---|---|
| fs | 文件系统操作 | readFile, writeFile, mkdir, createReadStream |
文件读写、目录操作 |
| path | 处理文件路径 | join, resolve, dirname, basename |
跨平台路径处理 |
| http | HTTP 服务器/客户端 | createServer, request, get |
创建 Web 服务器/客户端 |
| https | HTTPS 服务器/客户端 | createServer, request |
创建安全 Web 服务 |
| url | URL 解析与处理 | parse, format, URL 类 |
URL 解析和构造 |
| querystring | 查询字符串处理 | parse, stringify |
处理 URL 查询参数 |
| os | 操作系统信息 | cpus, freemem, totalmem, platform |
获取系统信息 |
| events | 事件处理 | EventEmitter, on, emit, once |
自定义事件系统 |
| stream | 流操作 | Readable, Writable, pipe |
处理数据流 |
| crypto | 加密功能 | createHash, createCipher, randomBytes |
加密/解密/哈希 |
| zlib | 压缩/解压 | createGzip, createGunzip |
数据压缩解压 |
| util | 实用工具 | promisify, inherits, format |
工具函数 |
| child_process | 子进程管理 | exec, spawn, fork |
创建子进程 |
| cluster | 集群管理 | fork, isMaster, isWorker |
多进程负载均衡 |
| dns | 域名解析 | lookup, resolve |
域名解析 |
| net | 网络操作 | createServer, connect, Socket |
TCP 服务器/客户端 |
| dgram | UDP 数据报 | createSocket, send |
UDP 通信 |
| readline | 逐行读取 | createInterface, on('line') |
命令行交互 |
| repl | 交互式解释器 | start, context |
创建 REPL 环境 |
| vm | 虚拟机 | runInContext, createContext |
执行 JavaScript 代码 |
| assert | 断言测试 | equal, strictEqual, throws |
单元测试断言 |
| buffer | 二进制数据处理 | Buffer, alloc, from, concat |
处理二进制数据 |
| console | 控制台输出 | log, error, time, timeEnd |
调试输出 |
| timers | 定时器 | setTimeout, setInterval, setImmediate |
定时任务 |
| perf_hooks | 性能监控 | performance, PerformanceObserver |
性能测量 |
| worker_threads | 工作线程 | Worker, isMainThread, parentPort |
多线程编程 |
三、核心模块详解
1. fs(文件系统模块)
fs 模块提供了与文件系统交互的 API,支持同步和异步两种操作方式。
主要功能:
-
读写文件
-
创建/删除目录
-
监视文件变化
-
获取文件信息
const fs = require('fs'); // 异步读取文件 fs.readFile('example.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); // 同步写入文件 try { fs.writeFileSync('output.txt', 'Hello Node.js'); console.log('文件写入成功'); } catch (err) { console.error(err); }
2. path(路径模块)
path 模块提供处理文件和目录路径的工具函数,可以跨平台使用。
常用方法:
-
path.join()- 连接路径 -
path.resolve()- 解析为绝对路径 -
path.basename()- 获取文件名 -
path.extname()- 获取文件扩展名
const path = require('path'); const fullPath = path.join(__dirname, 'files', 'example.txt'); console.log(fullPath); // 输出类似: /home/user/project/files/example.txt const ext = path.extname('index.html'); console.log(ext); // 输出: .html
3. http(HTTP 模块)
http 模块允许 Node.js 作为 HTTP 服务器或客户端运行。
主要功能:
-
创建 HTTP 服务器
-
发起 HTTP 请求
-
处理 HTTP 请求和响应
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello Node.js Server'); }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });
4. events(事件模块)
events 模块提供了事件驱动的编程接口,是 Node.js 异步编程的基础。
核心概念:
-
EventEmitter类 -
事件监听 (
on) -
事件触发 (
emit)
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const myEmitter = new MyEmitter(); // 监听事件 myEmitter.on('event', () => { console.log('事件被触发!'); }); // 触发事件 myEmitter.emit('event');
5. os(操作系统模块)
os 模块提供与操作系统相关的实用方法和属性。
常用功能:
-
获取 CPU 信息
-
获取内存信息
-
获取网络接口信息
-
获取系统临时目录
const os = require('os'); console.log(os.platform()); // 操作系统平台 console.log(os.totalmem()); // 系统总内存 console.log(os.freemem()); // 系统可用内存 console.log(os.cpus()); // CPU 信息
四、其他重要内置模块
1. util(实用工具模块)
util 模块提供各种实用功能,包括:
-
类型检查
-
格式化字符串
-
回调函数转 Promise(
util.promisify()) -
继承工具(
util.inherits())
2. crypto(加密模块)
crypto 模块提供加密功能,包括:
-
哈希算法(MD5、SHA-256 等)
-
HMAC
-
加密/解密
-
数字签名
-
随机数生成
3. stream(流模块)
stream 模块是处理流数据的抽象接口,Node.js 中许多模块都基于流实现,包括文件流、网络流等。
4. child_process(子进程模块)
child_process 模块允许创建和控制子进程,可以执行系统命令或其他程序。
5. url(URL 处理模块)
url 模块提供 URL 解析和格式化的工具。
五、如何使用内置模块
所有内置模块都可以通过 require() 函数直接加载:
const moduleName = require('module_name');
注意事项:
-
模块名称不需要加路径
-
模块名称区分大小写
-
不需要安装,Node.js 自带
-
不同 Node.js 版本可能包含不同的内置模块
六、内置模块的优势
| 优势 | 说明 |
|---|---|
| 高性能 | 与 Node.js 运行时紧密集成,使用 C++ 实现核心功能 |
| 稳定性 | 经过严格测试,可靠性高 |
| 无需安装 | 开箱即用,无需额外安装 |
| 跨平台 | 在不同操作系统上表现一致 |
| 文档完善 | 官方文档详细,社区支持丰富 |
七、本章小结
| 知识点 | 说明 |
|---|---|
| 什么是内置模块 | Node.js 自带、无需安装的核心模块 |
| 加载方式 | 使用 require('module_name') 直接加载 |
| 核心模块 | fs、path、http、events、os、util、crypto、stream 等 |
| 优势 | 高性能、稳定、跨平台、无需安装 |
提示:熟练掌握内置模块是 Node.js 开发的基础。建议在开发前浏览官方文档,了解每个模块提供的功能,这样可以避免重复造轮子,提高开发效率。