Node.js 核心库是内置的、无需安装的模块,提供了文件操作(fs)、网络通信(http/https)、路径处理(path)、工具函数(util)、事件驱动(events)、流处理(stream)和加密(crypto)等基础功能,是其强大能力的基石。
最常用且必须掌握的几个是:fs
, path
, http
, events
, util
。
好的,Node.js 的基础库(通常称为核心模块或内置模块)是其强大功能的核心。它们随 Node.js 运行时一起安装,无需通过 npm 下载即可直接使用。
这些模块提供了处理文件系统、网络、异步操作、流等关键功能。
以下是 Node.js 中一些最重要和最常用的基础库/核心模块:
一、核心中的核心(几乎每个项目都会用到)
-
fs
(File System)- 功能:用于与文件系统进行交互。可以读取、写入、更新、删除文件和目录,以及监听文件变化。
- 特点:几乎所有方法都同时提供同步(阻塞,如
fs.readFileSync
)和异步(非阻塞,如fs.readFile
)两种版本。强烈推荐使用异步版本以避免阻塞事件循环。 - 常用操作:
readFile
,writeFile
,appendFile
,mkdir
,readdir
,stat
,watch
。
-
path
- 功能:用于处理和转换文件路径。它可以帮助你解决不同操作系统(Windows 和 Linux/macOS)路径分隔符(
\
vs/
)不一致的问题。 - 常用方法:
join()
,resolve()
,dirname()
,basename()
,extname()
,normalize()
。
- 功能:用于处理和转换文件路径。它可以帮助你解决不同操作系统(Windows 和 Linux/macOS)路径分隔符(
-
http
和https
- 功能:用于创建 HTTP 服务器和客户端,以及处理 HTTPS 请求。这是构建 Web 服务器和 API 的基石。
- 常用类:
http.createServer()
,http.request()
,http.get()
。
-
events
- 功能:Node.js 事件驱动架构的核心。许多其他核心模块(如
fs
,http
)都继承自EventEmitter
类。 - 常用类:
EventEmitter
。使用on()
监听事件,emit()
触发事件。
- 功能:Node.js 事件驱动架构的核心。许多其他核心模块(如
-
util
- 功能:提供一系列实用工具函数。常用于类型检查、格式化字符串、继承等。
- 常用方法:
util.promisify()
(将回调风格的函数转换为 Promise 版本),util.inherits()
(实现继承),util.types.is...
(类型判断)。
二、重要工具模块
-
stream
- 功能:用于处理流式数据(例如大文件)。流是处理大量数据而不必将其全部加载到内存中的强大方式。
- 类型:可读流(Readable)、可写流(Writable)、双工流(Duplex)、转换流(Transform)。
- 应用:文件读写、网络请求、压缩解压(
zlib
)。
-
buffer
- 功能:用于处理二进制数据流。
Buffer
类是 Node.js 中用于直接操作原始内存的全局类型,通常在处理 TCP 流、文件系统操作等场景中出现。
- 功能:用于处理二进制数据流。
-
crypto
- 功能:提供加密功能,包括对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。
- 常用操作:创建哈希(如 MD5, SHA256)、加密解密(如 AES)、生成随机数、生成密钥。
-
os
- 功能:提供与操作系统相关的实用方法和属性。
- 常用操作:
os.platform()
,os.arch()
,os.cpus()
(获取CPU信息),os.totalmem()
(总内存),os.freemem()
(空闲内存),os.homedir()
。
-
url
- 功能:用于解析和处理 URL 字符串。
- 常用方法:
url.parse()
,url.format()
,new URL()
(WHATWG URL API,现代标准)。
-
querystring
- 功能:用于解析和格式化 URL 查询字符串(如
?name=John&age=30
)。 - 常用方法:
querystring.parse()
,querystring.stringify()
。
- 功能:用于解析和格式化 URL 查询字符串(如
三、其他常用模块
-
child_process
- 功能:用于创建子进程,可以执行系统命令或运行其他脚本。
- 常用方法:
spawn()
,exec()
,execFile()
,fork()
。
-
cluster
- 功能:允许轻松创建共享服务器端口的子进程(工作进程),用于充分利用多核 CPU 性能。
-
zlib
- 功能:提供压缩和解压缩功能,使用 Gzip、Deflate/Inflate 算法。通常与
fs
和stream
配合使用。
- 功能:提供压缩和解压缩功能,使用 Gzip、Deflate/Inflate 算法。通常与
-
console
- 功能:用于向 stdout 和 stderr 打印信息。比浏览器中的
console
功能更简单,但也是最常用的调试工具。
- 功能:用于向 stdout 和 stderr 打印信息。比浏览器中的
-
timers
- 功能:全局可用,无需
require
。提供了setTimeout
,setInterval
,setImmediate
等函数,用于安排代码在将来某个时间执行。
- 功能:全局可用,无需
-
dns
- 功能:用于域名解析,例如将主机名解析为 IP 地址。
-
net
- 功能:提供基于流的 TCP 或 IPC 服务器 (
net.createServer()
) 和客户端 (net.createConnection()
) 的异步网络 API。http
模块就是基于它构建的。
- 功能:提供基于流的 TCP 或 IPC 服务器 (
如何使用?
要使用这些模块,你只需要使用 require()
函数将它们导入到你的文件中:
// 导入核心模块
const fs = require('fs');
const path = require('path');
const http = require('http');// 使用模块
fs.readFile('/some/file.txt', (err, data) => {if (err) throw err;console.log(data);
});const server = http.createServer((req, res) => {res.end('Hello World!');
});server.listen(3000);
总结
这些核心模块是 Node.js 生态系统的基石。第三方 npm 包(如 Express, Socket.IO)大多也是基于这些核心模块构建的。熟练掌握这些基础库,是成为一名高效 Node.js 开发者的关键第一步。建议从 fs
, path
, http
, events
这几个最常用的模块开始学习和实践。