大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
global 与内置模块
nodejs-essentials 的 node-modules 讲了 require/import。本课梳理 global 对象、globalThis、常用 node: 内置模块——写运行时脚本时知道「不用 npm 装什么」。
学习目标
- 理解
global/globalThis与「不要污染全局」原则 - 列出 path、os、crypto、events、util 等高频内置模块
- 使用
node:前缀 import 的最佳实践
global 与 globalThis
浏览器有 window;Node 有 global(CommonJS 时代)与标准 globalThis(ES2020,跨环境统一)。
globalThis.__APP_VERSION__ = "1.0.0"; // 可用但不推荐
反模式:在库文件里挂 global.myUtil = ...——污染命名空间,与测试、多实例冲突。
推荐:模块 export;真需单例用闭包或 Symbol.for 注册表(高级)。
process、Buffer、__dirname(CJS)/import.meta.url(ESM)是 Node 特有「准全局」——见 node-runtime。
node: 前缀
Node 18+ 推荐显式内置:
import fs from "node:fs/promises";
import path from "node:path";
import crypto from "node:crypto";
import { EventEmitter } from "node:events";
import { promisify } from "node:util";
避免与 npm 包同名冲突(历史上曾有 events 包与内置混淆)。
内置模块地图
| 模块 | 用途 | 本 track 关联 |
|---|---|---|
timers / global timers | 定时器 | nrt-timers |
child_process | 子进程 | nrt-child |
worker_threads | 工作线程 | nrt-worker |
cluster | 多进程 | nrt-cluster |
perf_hooks | 性能、EL delay | nrt-apm |
inspector | 编程式调试 | nrt-debug |
v8 | heap 统计 | nrt-gc |
os | CPU、内存、home | cluster _fork 数量 |
readline | stdin 行读 | nva-cli |
完整列表:node --experimental-repl-await 里 require('node:module').builtinModules 或官方 docs。
events 与 stream
EventEmitter 是 Node 核心模式(nva-events)。Stream 在 node-streams 深入;运行时只需知 pipeline + promisify 防泄漏。
import { pipeline } from "node:stream/promises";
import { createReadStream, createWriteStream } from "node:fs";
练习
- 用
node:os打印cpus().length与homedir() - 用
node:crypto生成 randomUUID,不写任何 npm 依赖 - 列出你项目里可改为
node:前缀的三个 import
小结
globalThis 统一全局;内置 node: 模块覆盖运行时大半需求。 下一课综合练习——Worker + 调试一条 CPU 流水线。