Node.js 内置模块

Node.js 内置模块是 Node.js 运行时自带的、无需额外安装即可使用的核心功能模块。这些模块提供了基础的系统功能,如文件操作、网络通信、进程管理等,是 Node.js 开发的基础工具。

与需要通过 npm 安装的第三方模块不同,内置模块可以直接通过 require() 函数加载使用,例如:

const fs = require('fs'); // 文件系统模块
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);
}

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
  • 继承工具

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');

注意事项:

  1. 模块名称不需要加路径
  2. 模块名称区分大小写
  3. 不需要安装,Node.js 自带
  4. 不同 Node.js 版本可能包含不同的内置模块

内置模块的优势

  1. 高性能:与 Node.js 运行时紧密集成
  2. 稳定性:经过严格测试,可靠性高
  3. 无需安装:开箱即用
  4. 跨平台:在不同操作系统上表现一致
  5. 文档完善:官方文档详细