Node.js 内置模块
Node.js 内置模块是 Node.js 运行时自带的、无需额外安装即可使用的核心功能模块。这些模块提供了基础的系统功能,如文件操作、网络通信、进程管理等,是 Node.js 开发的基础工具。
与需要通过 npm 安装的第三方模块不同,内置模块可以直接通过 require() 函数加载使用,例如:
const fs = require('fs'); // 文件系统模块
const http = require('http'); // HTTP 模块
const http = require('http'); // HTTP 模块
常用内置模块介绍
以下是 Node.js 主要内置模块的详细说明和功能概述。
| 模块名称 | 描述 | 常用类/方法 | 典型用途 |
|---|---|---|---|
| fs (File System) | 文件系统操作 | readFile, writeFile, mkdir, readdir, createReadStream, createWriteStream |
文件读写、目录操作 |
| path | 处理文件路径 | join, resolve, dirname, basename, extname |
跨平台路径处理 |
| 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, homedir, hostname |
获取系统信息 |
| events | 事件处理 | EventEmitter, on, emit, once |
自定义事件系统 |
| stream | 流操作 | Readable, Writable, Duplex, Transform, pipe |
处理数据流 |
| crypto | 加密功能 | createHash, createCipher, createDecipher, randomBytes |
加密/解密/哈希 |
| zlib | 压缩/解压 | createGzip, createGunzip, createDeflate, createInflate |
数据压缩解压 |
| util | 实用工具 | promisify, inherits, format, types |
工具函数 |
| child_process | 子进程管理 | exec, execFile, spawn, fork |
创建子进程 |
| cluster | 集群管理 | fork, isMaster, isWorker |
多进程负载均衡 |
| dns | 域名解析 | lookup, resolve, reverse |
域名解析 |
| domain | 处理多个异步操作错误的模块 | create , run, add |
提供了一种将多个不同的 I/O 操作分组并统一处理其错误的机制。 |
| net | 网络操作 | createServer, connect, Socket |
TCP服务器/客户端 |
| dgram | UDP数据报 | createSocket, send, bind |
UDP通信 |
| readline | 逐行读取 | createInterface, on('line') |
命令行交互 |
| repl | 交互式解释器 | start, context |
创建REPL环境 |
| vm | 虚拟机 | runInContext, createContext, Script |
执行JavaScript代码 |
| assert | 断言测试 | equal, strictEqual, deepEqual, throws |
单元测试断言 |
| buffer | 二进制数据处理 | Buffer, alloc, from, concat |
处理二进制数据 |
| console | 控制台输出 | log, error, time, timeEnd |
调试输出 |
| timers | 定时器 | setTimeout, setInterval, setImmediate, clearTimeout |
定时任务 |
| 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);
}
// 异步读取文件
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
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/');
});
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');
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 信息
console.log(os.platform()); // 操作系统平台
console.log(os.totalmem()); // 系统总内存
console.log(os.freemem()); // 系统可用内存
console.log(os.cpus()); // CPU 信息
其他重要内置模块
1. util (实用工具模块)
util 模块提供各种实用功能,包括:
- 类型检查
- 格式化字符串
- 回调函数转 Promise
- 继承工具
2. crypto (加密模块)
crypto 模块提供加密功能,包括:
- 哈希算法
- 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 运行时紧密集成
- 稳定性:经过严格测试,可靠性高
- 无需安装:开箱即用
- 跨平台:在不同操作系统上表现一致
- 文档完善:官方文档详细
点我分享笔记