SuperAPI AI 工具集

javascript

写作与研究

查看项目

更新于 10-15 19:54

技能介绍

用途:提供一套有主见的 JavaScript/Node 编码约定,在你编写或修改代码时应用,但不主动重构未改动的文件,除非被要求。

主要能力与规则:

  1. 全面使用 ESM。新包设置 "type": "module",避免同一包内混用 CJS 与 ESM,否则会产生双包危害(同一模块两份独立状态)。
  2. Promise 组合器要匹配意图:循环内顺序 await 会串行化本可并行的任务;Promise.all 一旦有一个拒绝就丢弃整批;部分成功可接受时用 allSettled。
  3. 每个 catch 要么处理要么重新抛出,只记录并继续会把故障转成下游脏状态。无事可做时就不要 catch。
  4. 可取消的操作(fetch、定时器、流、监听器)使用 AbortController 与 { signal },否则被放弃的请求会继续持有处理器和闭包。
  5. 不要阻塞事件循环:请求路径上不用 readFileSync、不做长时间同步解析或加密;CPU 密集工作交给工作线程。
  6. 不要修改参数:返回新值,使用非变更方法 toSorted、toReversed、toSpliced、with;注意 arr.sort() 会原地排序调用方数组。
  7. 内置模块加 node: 前缀,避免被同名用户包遮蔽。
  8. 优先使用平台能力再考虑依赖:structuredClone、Intl、URL/URLSearchParams、crypto.randomUUID、Array.prototype.at/findLast、Object.groupBy。

发布包:exports 映射即公开接口,未列出的路径不可访问;声明 "sideEffects": false(或列出有副作用的文件)以支持 tree shaking。示例配置为 type module、exports 指向 dist 的 types 与 default,并包含 ./package.json。ESM 两个易踩点:相对导入需写扩展名(./utils.js);没有 __dirname,可用 fileURLToPath(import.meta.url) 推导,或需要加载仅 CJS 的包时用 createRequire(import.meta.url)。

限制:资料未提供具体版本要求、工具链配置、测试或性能基准等细节。