日志是「来一条 push 一条」,store 里的数组每来一条就是新的,于是整个列表重渲染; 而列表最多留 500 条,不做 memo 就是每来一行重渲染 500 行,每行还要跑 5 次 cn() (tailwind-merge 不便宜)。爬虫一跑日志是成片来的,主线程直接被占满 —— 表现就是 点什么都没反应,点折叠最容易注意到,因为那一下还要把整份列表挂载/卸载一遍。 log 对象在数组里是稳定引用,memo 之后只有新来的那一行会渲染。
- 新增 webui/ 前端源码目录(React+Vite+TypeScript+Tailwind) - 删除 api/webui/ 中旧的打包静态资源 - 更新 .gitignore 忽略 api/webui/ 构建输出和 webui/node_modules - 更新 README 增加前端构建说明