最近在 AI 的加持下, 前端纷纷从嵌入 webview 的做法迁移到 GPUI 类似的原生框架, 推荐这篇文章读一下:
作者认为 GPUI 虽然跑得很快,但状态更新还是依赖手动 notify,框架并不知道具体哪个数据变了, 哪些 UI 真正需要更新,即使类似 GPUI-fast 做了缓存和节点保留,也无法彻底解决这个问题
他更推荐 SolidJS 那种 Signals + Run Once 的思路,组件只创建一次,数据变化时只更新相关的部分
但是这篇文章漏掉了
@huacnlee 他们做的 NSH 它用的也是 SolidJS 风格的 Signals,UI 节点会一直保留,底层既能用各个平台的原生组件,也能接 GPUI-fast 来做 GPU 渲染
我个人觉得这个思路才是正途, 尤其是把状态管理和具体怎么渲染分开之后,后续有很多优化空间可以进行尝试, NSH 唯一的缺点就是整个框架是用 rust 写的, 这周试试看让 AI 用我最喜欢的 zig 来抄袭一下 😊