Node.js速查表
Node.js核心API速查表,涵盖模块系统、文件操作、HTTP服务、流、事件、缓冲区、子进程等常用API参考。
📦 模块系统
| 语法 | 说明 |
|---|---|
require("module") | CommonJS导入模块 |
module.exports = { ... } | CommonJS导出(整个模块) |
exports.name = value | CommonJS导出(单个属性) |
import fs from "fs" | ESM默认导入 |
import { readFile } from "fs" | ESM命名导入 |
export default function() {} | ESM默认导出 |
export const name = value | ESM命名导出 |
__dirname | 当前文件所在目录的绝对路径 |
__filename | 当前文件的绝对路径 |
import.meta.url | ESM中获取当前模块URL |
require.resolve("module") | 解析模块路径但不加载 |
require.cache | 模块缓存对象,可删除以强制重新加载 |
📄 文件系统
| 方法 | 说明 |
|---|---|
fs.readFile(path, cb) | 异步读取文件内容 |
fs.readFileSync(path) | 同步读取文件内容 |
fs.writeFile(path, data, cb) | 异步写入文件(覆盖) |
fs.writeFileSync(path, data) | 同步写入文件 |
fs.appendFile(path, data, cb) | 异步追加内容到文件 |
fs.existsSync(path) | 同步检查文件或目录是否存在 |
fs.access(path, cb) | 异步检查文件或目录的访问权限 |
fs.readdir(path, cb) | 异步读取目录内容 |
fs.mkdir(path, cb) | 异步创建目录 |
fs.mkdirSync(path, { recursive: true }) | 同步递归创建目录 |
fs.rm(path, { recursive: true }, cb) | 异步删除文件或目录 |
fs.unlink(path, cb) | 异步删除文件 |
fs.stat(path, cb) | 异步获取文件/目录信息 |
fs.copyFile(src, dest, cb) | 异步复制文件 |
fs.rename(oldPath, newPath, cb) | 异步重命名/移动文件 |
🌐 HTTP模块
| 方法 | 说明 |
|---|---|
http.createServer(callback) | 创建HTTP服务器 |
server.listen(port) | 服务器监听指定端口 |
http.get(url, cb) | 发起GET请求 |
http.request(options, cb) | 发起HTTP请求 |
req.method | 请求方法(GET/POST等) |
req.url | 请求URL路径 |
req.headers | 请求头对象 |
req.on("data", chunk => {}) | 接收请求体数据 |
req.on("end", () => {}) | 请求体接收完成 |
res.writeHead(status, headers) | 设置响应状态码和头 |
res.setHeader("Content-Type", type) | 设置响应头 |
res.write(data) | 写入响应数据 |
res.end(data) | 结束响应并发送数据 |
res.statusCode | 设置响应状态码 |
📁 路径模块
| 方法 | 说明 |
|---|---|
path.join("a", "b", "c") | 拼接路径片段 |
path.resolve("a", "b") | 解析为绝对路径 |
path.basename("/a/b/c.txt") | 获取路径最后一部分(文件名) |
path.dirname("/a/b/c.txt") | 获取目录部分 |
path.extname("file.txt") | 获取文件扩展名 |
path.normalize("/a//b/../c") | 规范化路径(解析.和..) |
path.parse("/a/b/c.txt") | 将路径解析为对象 |
path.format(obj) | 将路径对象格式化为字符串 |
path.relative("/a", "/a/b/c") | 计算相对路径 |
path.sep | 路径分隔符(/ 或 \) |
path.delimiter | 环境变量路径分隔符 |
🌊 流
| 类型/方法 | 说明 |
|---|---|
fs.createReadStream(path) | 创建可读流 |
fs.createWriteStream(path) | 创建可写流 |
stream.pipe(dest) | 将可读流管道到可写流 |
stream.on("data", chunk => {}) | 监听流数据事件 |
stream.on("end", () => {}) | 流读取结束事件 |
stream.on("error", err => {}) | 流错误事件 |
new Transform({ transform(chunk, enc, cb) {} }) | 自定义转换流 |
pipeline(src, ...transforms, dest, cb) | 管道连接多个流并处理错误 |
stream.finished(stream, cb) | 监听流结束 |
stream.Readable.from(iterable) | 从迭代器创建可读流 |
📡 事件
| 方法 | 说明 |
|---|---|
emitter.on(event, listener) | 注册事件监听器 |
emitter.once(event, listener) | 注册一次性事件监听器 |
emitter.emit(event, ...args) | 触发事件 |
emitter.removeListener(event, listener) | 移除事件监听器 |
emitter.removeAllListeners(event) | 移除指定事件的所有监听器 |
emitter.eventNames() | 获取已注册的事件名列表 |
emitter.listenerCount(event) | 获取指定事件的监听器数量 |
EventEmitter.defaultMaxListeners | 默认最大监听器数量(默认10) |
emitter.setMaxListeners(n) | 设置最大监听器数量 |
process.on("uncaughtException", cb) | 监听未捕获的异常 |
process.on("unhandledRejection", cb) | 监听未处理的Promise拒绝 |
⚙️ 子进程
| 方法 | 说明 |
|---|---|
child_process.spawn(cmd, args, options) | 创建子进程执行命令(流式输出) |
child_process.exec(cmd, cb) | 执行命令并缓冲输出 |
child_process.execFile(file, args, cb) | 执行可执行文件 |
child_process.fork(modulePath) | 创建子进程运行Node.js模块 |
child.on("exit", code => {}) | 监听子进程退出事件 |
child.on("message", msg => {}) | 接收子进程消息 |
child.send(data) | 向子进程发送消息 |
child.stdin.write(data) | 向子进程标准输入写入数据 |
child.stdout.on("data", cb) | 监听子进程标准输出 |
child.kill(signal) | 终止子进程 |
process.env | 环境变量对象 |
process.exit(code) | 终止当前进程 |
🔧 实用模块
| 模块/方法 | 说明 |
|---|---|
os.platform() | 获取操作系统平台 |
os.cpus() | 获取CPU信息 |
os.totalmem() | 获取总内存 |
os.freemem() | 获取空闲内存 |
os.uptime() | 获取系统运行时间(秒) |
os.homedir() | 获取用户主目录 |
crypto.createHash("sha256") | 创建哈希实例 |
crypto.randomBytes(size) | 生成随机字节 |
crypto.randomUUID() | 生成UUID v4 |
new URL("https://example.com/path?q=1") | URL解析 |
new URLSearchParams(params) | 查询参数处理 |
querystring.parse(str) | 解析查询字符串为对象 |
querystring.stringify(obj) | 将对象序列化为查询字符串 |
util.promisify(fn) | 将回调函数转换为Promise |
util.inspect(obj, { depth: null }) | 深度格式化对象为字符串 |
关于Node.js
Node.js是基于Chrome V8引擎的JavaScript运行时,使JavaScript可以在服务器端运行。掌握这些核心API可以帮助你构建高性能的网络应用。建议使用async/await配合Promise处理异步操作。