JavaScript (Node.js) 标准库:完整概述
Node.js 是一个基于 Google V8 引擎的 JavaScript 运行时环境。其主要优势之一在于拥有丰富的标准库,提供了现成的模块来解决各种任务:从文件系统操作到创建 HTTP 服务器。本文将详细解析 Node.js 标准库中的关键模块,展示其使用示例,并说明何时应用哪个模块。
1. fs 模块 (文件系统)
fs 模块允许操作文件系统:读取、写入、删除文件和目录,以及监视更改。它同时提供同步和异步方法。
const fs = require('fs');
// 异步读取文件fs.readFile('example.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data);});
// 同步写入文件fs.writeFileSync('output.txt', 'Hello, Node.js!');fs.readFile()— 异步读取文件。fs.writeFileSync()— 同步写入数据到文件。fs.mkdir()— 创建目录。fs.unlink()— 删除文件。
2. path 模块
path 模块提供了处理文件和目录路径的实用工具。它能自动处理不同操作系统(Windows、Linux、macOS)之间的差异。
const path = require('path');
const filePath = '/home/user/docs/file.txt';console.log(path.dirname(filePath)); // /home/user/docsconsole.log(path.basename(filePath)); // file.txtconsole.log(path.extname(filePath)); // .txtpath.join()— 连接路径片段。path.resolve()— 将相对路径转换为绝对路径。path.normalize()— 规范化路径(去除多余的..和.)。
3. http 模块
http 模块允许创建 HTTP 服务器和客户端。这是构建 Web 应用和 API 的基础。
const http = require('http');
const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello, World!');});
server.listen(3000, () => { console.log('服务器已启动,端口 3000');});http.createServer()— 创建服务器实例。http.request()— 向外部资源发起 HTTP 请求。http.get()—request()的简化版本,用于 GET 请求。
4. events 模块
events 模块实现了“观察者”模式。它允许创建自定义事件并订阅它们。大多数 Node.js 对象(例如流、服务器)都继承自 EventEmitter。
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();myEmitter.on('event', () => { console.log('事件发生了!');});myEmitter.emit('event');emitter.on()— 订阅事件。emitter.emit()— 触发事件。emitter.once()— 订阅一次性事件。
5. stream 模块
流(streams)是 Node.js 中处理数据的基本概念,数据以块的形式而非整体进行处理。这对于