global 与内置模块
global-keyword、common-built-in-modules。
25 分钟
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 |