[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2gjloyp62ia9l":3},{"code":4,"message":5,"data":6,"timestamp":26},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":22,"homepage":23,"updated_at":24,"history":25},"stackedlol\u002Fascii-sharks",4,"ascii shark components in typescript","TypeScript",810,62,151,5,[],"一个零依赖的 TypeScript canvas 引擎，在网页上渲染游动的 ASCII 鲨鱼和鱼群。","## 解决什么问题\n\n网页上的 ASCII 画大多是一次性贴进 `\u003Cpre>` 的静态字符，要做成会动的场景，就得自己写 `setInterval` 轮换字符串，或者引入 p5.js 之类通用创意编程库手动绘制字符。这个项目把这件事封装成一个画布组件：`OceanEngine` 接收 canvas 和一组实体（比如 `hammerhead` 鲨鱼、鱼），由它负责渲染循环和场景组合。README 很短，除了基础用法几乎没写别的，具体能力基本只能靠读源码。\n\n## 有什么不同\n\n和手写字符串动画相比，它多了一层场景与实体的抽象；和 p5.js 这类通用库相比，它更小、更专一，代价是 API 面窄且没有文档。它是件作品式的库，而不是一个有稳定契约的渲染器——README 没有说明 `OceanEngine` 还支持哪些参数或实体类型，也没写性能或分辨率上的考虑。\n\n## 适合谁\n\n适合想要在页面上放一片 ASCII 海洋氛围、且愿意读源码摸 API 的前端开发者，用于个人站点、作品集点缀或课堂演示。不适合需要稳定公开 API、开箱即用的无障碍支持，或把它当通用 2D 动画库使用的人——那类需求应该选 p5.js 或正式的游戏框架。\n\n## 上手成本\n\nTypeScript 编写，MIT 协议。README 里唯一的安装方式是在仓库内执行 `npm install && npm run dev`，示例代码直接从 `.\u002Fsrc` 引入，说明它目前还不能作为 npm 包安装，实际使用大概率要拷贝源码。仓库没有 topics、没有主页，也没写运行时或平台要求。零依赖让安装很轻，但项目才创建 5 天，API 稳定性无从判断。\n\n## 点评\n\n仓库创建于 2026 年 10 月，5 天内积累约 800 star，new typescript 榜单显示日均新增约 158，排名第 4，这明显是被画面效果带动的一波上涨，而不是生产使用的证据。项目没有进过 GitHub trending 日榜，Hacker News 上也没有相关讨论，关注度集中在一个渠道。MIT 协议加零依赖，试错成本很低。把它当成一个有灵气的起点而不是成熟库：先读 `src`，默认 API 会变，别在不容易替换的地方依赖它。",{"slug":19,"name":20},"media","多媒体与设计",[],"MIT",null,"2026-10-25T01:36:48Z",[],1792912818]