Skip to content

Node.js 全局变量

global / globalThis

js
// Node.js 中用 global 定义全局变量(类似浏览器的 window)
global.xxx = 'xxx'

// globalThis(ES2020)自动适配环境:Node → global,浏览器 → window
globalThis.xxx = 'xxx'

__dirname / __filename(仅 CJS)

js
__dirname   // 当前模块所在目录的绝对路径
__filename  // 当前模块文件的绝对路径(含文件名+扩展名)

ESM 替代方案:

js
// Node < 20.11
import { fileURLToPath } from 'node:url'
import { dirname } from 'node:path'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)

// Node >= 20.11.0
import.meta.filename  // 同 __filename
import.meta.dirname   // 同 __dirname

process(全局对象,无需导入)

属性/方法说明
process.argv命令行参数数组
process.env环境变量对象
process.cwd()当前工作目录
process.on(event, cb)监听事件(exit, uncaughtException 等)
process.exit([code])退出进程
process.pid进程 PID

Buffer(全局类,处理二进制数据)

js
// 创建
Buffer.alloc(size)          // 创建指定大小的 Buffer
Buffer.from(array)          // 从数组创建
Buffer.from(string)         // 从字符串创建

// 读写
buffer[index]               // 读写指定字节
buffer.length               // 字节长度
buffer.toString()           // 转为字符串

// 转换
buffer.toJSON()             // 转 JSON
buffer.slice([start, end])  // 切片

// 工具
Buffer.isBuffer(obj)        // 判断是否为 Buffer
Buffer.concat(list)         // 拼接多个 Buffer

从 Node 6.0 起弃用 new Buffer(),请用 Buffer.alloc() / Buffer.from()

其他可用 API

Node 无 DOM/BOM,但 ECMAScript 标准 API 照常可用: setTimeout setInterval Promise Math console Date fetch(v18+) 等