ranuts
面向前端与 Node 的工具库,以多个独立、可 tree-shake 的入口发布。从拥有该能力的子路径引入,其余部分就不会进入你的构建产物。全部用 TypeScript 编写,每个导出都从源码生成文档。
- npm:
ranuts· 源码:packages/ranuts
npm install ranutsimport { debounce } from 'ranuts/utils';入口
| 引入 | 内容 | 运行环境 |
|---|---|---|
ranuts |
根 barrel(utils + visual 的全部导出) | 浏览器 + node |
ranuts/utils |
DOM/BOM、字符串、对象、数字、颜色、时间、存储…… | 浏览器 + node* |
ranuts/node |
HTTP server、路由、WebSocket、fs、流、中间件 | 仅 node |
ranuts/visual |
2D 渲染引擎(Canvas / WebGL / WebGPU) | 仅浏览器 |
ranuts/i18n |
翻译引擎,扁平词条、运行时切换 | 浏览器 + node |
ranuts/sw |
缓存策略与预缓存协议的 worker 一侧 | 仅 service worker |
ranuts/vnode |
Snabbdom 风格的虚拟 DOM | 浏览器 |
ranuts/stream |
SSE 解析、模型流折叠、token 预算 | 浏览器 + node |
ranuts/conversation |
事件日志 → 可渲染的会话节点 | 浏览器 + node |
* ranuts/utils 很宽:大部分面向浏览器,但纯函数在哪都能跑。不要在浏览器代码里引入 ranuts/node,它会带进 fs / http / child_process。
里面都有什么
函数式:debounce 防抖 · throttle 节流 · once / singleFlight · QuestQueue 并发队列 · withTimeout / deferred · compose 中间件
数据:cloneDeep 深拷贝 · isEqual 深比较 · merge 合并 · filterObj 过滤键 · 数字格式化与解析 · 颜色转换与混合
文本:md5 · truncate 截断 · detectLanguage 语种识别 · resolveLocale 语言判定 · segmentByRanges 分段高亮 · paginate 文本分页 · escapeHtml 转义
浏览器:storage 存储 · IndexedDB · worker 客户端 · postMessage 桥 · prefetch 预取 · 设备识别 · 性能采集 · ZIP · 录音 · 语音转文字
AI 与对话:stream 流式 · conversation 会话 · i18n 国际化
渲染:2D 引擎 · 虚拟 DOM · canvas 工具 · tween 缓动
Node:HTTP server 与路由 · 文件操作 · MIME 类型
以上只是一部分。API 参考里有每一个导出,带签名与描述,从源码生成,因此不会与代码脱节。
接下来读什么
| 如果你想…… | 读 |
|---|---|
| 查某个函数在不在、签名是什么 | API 参考 |
| 在两个相似的工具之间做选择 | 选型指南 |
| 按分类浏览 | 工具函数索引 |
| 渲染流式的模型响应 | stream → conversation |
| 在它之上搭界面 | ranui |
两个包都会把 CLAUDE.md 打进 npm 包里,那是给编码智能体看的导览文件,可以直接从 node_modules 读,不需要联网。