用途
JavaScript Operations 是一个关于现代 JavaScript 和 Node.js 的综合参考技能,覆盖异步模式、模块系统、运行时内部机制以及 ES2022–2025 语言特性。它适合需要系统查阅 JS/Node 技术细节、做出架构或迁移决策、或排查异步与模块问题的开发者使用。
主要能力
异步决策树
以决策树形式引导选择异步方案:
- 简单一次性操作(数据库查询、HTTP 调用)→ async/await 加 try/catch
- 多个独立操作 → Promise.all(全部成功)、Promise.allSettled(不关心失败)、Promise.race 或 Promise.any(首个胜出)
- 需要外部 resolve/reject 控制 → Promise.withResolvers()(ES2024)
- 处理异步值序列:已知数组用 for...of 配合 await;未知或无限序列用异步生成器加 for await...of
- 大数据或背压场景 → 流(ReadableStream / node:stream),包括 TransformStream、stream.pipeline()
- CPU 密集型工作 → setTimeout 让出执行权,或 Worker(浏览器)/ worker_threads(Node),共享内存用 SharedArrayBuffer 加 Atomics
- 遗留回调代码 → util.promisify() 或 new Promise() 包装
模块系统决策树
- 新项目或 Node 18+ → ESM,在 package.json 设置 "type": "module",支持顶层 await,打包器 tree-shaking 更佳
- 发布库 → ESM-only、CJS-only 或双包(推荐),双包用 "exports" 字段配合 "import"/"require" 条件
- 现有 CJS 项目迁移:逐文件迁移(重命名为 .mjs)、整项目迁移或保留 CJS 并加 ESM 包装层
- 浏览器无打包器 → 原生 ESM,script type="module" 加 importmap
- 动态加载 → import(),ESM 和 CJS 均可用
- 迁移路径:CJS → 双包 → ESM-only
事件循环速查
说明调用栈、微任务队列(Promise.then/catch/finally、queueMicrotask、MutationObserver、Node 的 process.nextTick)与宏任务队列(setTimeout/setInterval、setImmediate、I/O 回调、requestAnimationFrame、MessagePort/Worker 消息)。列出 Node.js 事件循环阶段(libuv):timers → pending callbacks → idle/prepare → poll → check → close callbacks,并说明 process.nextTick 与微任务在每个阶段后清空。关键规则包括:微任务总在下一个宏任务前运行;process.nextTick 先于其他微任务;setImmediate 在 check 阶段;setTimeout(fn, 0) 在 timers 阶段。
现代 JS 速查表(ES2022–2025)
列出特性、年份与用法,包括:Array.at(-1)、Object.hasOwn、类私有字段、static {} 块、顶层 await、Error cause、structuredClone(ES2022);Array.findLast、WeakMap(Symbol)(ES2023);Object.groupBy、Map.groupBy、Promise.withResolvers、ArrayBuffer.prototype.resize、String.prototype.isWellFormed、import 属性(ES2024);Set 代数方法(union/intersection/difference)、Iterator helpers、using / Symbol.dispose(ES2025);Temporal API、import defer(Stage 3)。
Node.js 快速上手
包含 node:test 内置测试运行器用法、node:fs/promises 示例、.env 加载(Node 21+ 的 --env-file)。列出关键内置模块:node:fs/promises、node:path、node:url、node:crypto、node:stream、node:worker_threads、node:child_process、node:test、node:http/http2、node:diagnostics_channel、node:perf_hooks。
错误处理模式
提供标准 async try/catch、AbortSignal.timeout 超时中止、全局 unhandledRejection 处理、AggregateError 聚合错误、自定义 Error 类等模式示例。
常见陷阱
以表格形式列出陷阱、原因与修复方法,例如回调中 this 为 undefined、var 循环闭包问题、== 的宽松相等、0.1 + 0.2 浮点精度、?? 与 || 的区别、typeof null === 'object'、数组默认排序、parseInt 基数、for...in 遍历数组、Promise.all 快速失败、JSON.stringify 丢弃 undefined/函数/Symbol、async 函数总是返回 Promise 等。
参考资料文件
按需加载:references/async-patterns.md(Promise 组合器、异步迭代器、AbortController、流、Web Worker、结构化并发)、references/modules-runtime.md(ESM/CJS/双包、动态导入、V8 内部、内存管理、事件循环深入)、references/modern-features.md(ES2022-2025 特性细节、Proxy/Reflect、装饰器、Temporal、显式资源管理)、references/node-patterns.md(node:test、fs/promises、worker_threads、流、crypto、优雅关闭、权限模型)、references/expert-insights.md(浏览器端模式:DOM 批处理、事件委托、防抖/节流、记忆化、懒加载、XSS/CSP 客户端安全)。
使用方式
该技能以参考资料形式组织,包含决策树、速查表和按需加载的参考文件。具体安装命令、运行方式及平台集成信息暂未提供。
适用场景
- 选择异步编程方案与模块系统
- 迁移 CJS 到 ESM 或构建双包
- 查阅 ES2022–2025 新特性用法
- 使用 Node.js 内置测试运行器、fs/promises、worker_threads 等
- 排查事件循环、异步错误处理与常见 JS 陷阱
- 浏览器端性能与安全模式参考
限制
该技能为参考文档性质,具体 API 行为与可用性以对应运行时版本为准。安装命令、平台集成、收费信息资料未提供。相关技能包括 typescript-ops、react-ops、vue-ops、testing-ops、package-manager-ops。