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 运行时紧密集成
- 稳定性:经过严格测试,可靠性高
- 无需安装:开箱即用
- 跨平台:在不同操作系统上表现一致
- 文档完善:官方文档详细
点我分享笔记