Jane Street 的 Bonsai:OCaml 构建 Web 应用
Bonsai: Janestreet's UI Library

Jane Street 内部几乎全部 Web 应用都基于 Bonsai 构建,这是一个用 OCaml 编写的 UI 库,灵感部分来自 Elm。Bonsai 将组件实现为纯函数状态机,支持增量渲染,只在状态相关部分变化时更新视图。它允许开发者按需组合状态和增量计算原语,而非将状态、增量和渲染捆绑在单一抽象中。由于使用 OCaml,前后端可共享语言与类型系统,极大提升代码可读性与可维护性。Bonsai 还提供强大的测试框架,支持程序化操作 UI 元素并观察 DOM 变化,甚至无需打开浏览器即可完成组件测试。此外,Bonsai 不仅限于 Web,还包含终端界面(Bonsai_term)等扩展库,展现其通用状态机设计的灵活性。
Bonsai 允许你按需组合状态和增量计算原语,而不是将它们捆绑在单一的 UI 组件抽象中。
HN 评论区
151- flufluflufluffy
关于这项工作,Signals and Threads(Jane Street 的播客)有一期非常精彩的节目:https://signalsandthreads.com/building-a-ui-framework/
- bsmith89
考虑到他们的库与 React/Vue 相比简直冗长得离谱,现在有 LLM 来处理样板代码真是件好事。
- chrischen
> 而且因为 Bonsai 是用 OCaml 编写的,所以前后端可以使用相同的语言和类型。
终于!我一直在等这个成为可能!
- rw2
我敢肯定它性能非常出色,但在我看来它极其丑陋;肯定有人能在保持性能的同时把边距调好吧。
- cachius
很好奇这与 Melange 相比如何,Melange 也被 OCaml 公司用来在前后端双重使用 OCaml(ahrefs 是主要用户和赞助商)。这是否意味着要放弃大量 JS 生态(React、graphql 等)?