Jane Street 的 Bonsai:OCaml 构建 Web 应用

Bonsai: Janestreet's UI Library

Jane Street 的 Bonsai:OCaml 构建 Web 应用

Jane Street 内部几乎全部 Web 应用都基于 Bonsai 构建,这是一个用 OCaml 编写的 UI 库,灵感部分来自 Elm。Bonsai 将组件实现为纯函数状态机,支持增量渲染,只在状态相关部分变化时更新视图。它允许开发者按需组合状态和增量计算原语,而非将状态、增量和渲染捆绑在单一抽象中。由于使用 OCaml,前后端可共享语言与类型系统,极大提升代码可读性与可维护性。Bonsai 还提供强大的测试框架,支持程序化操作 UI 元素并观察 DOM 变化,甚至无需打开浏览器即可完成组件测试。此外,Bonsai 不仅限于 Web,还包含终端界面(Bonsai_term)等扩展库,展现其通用状态机设计的灵活性。

Bonsai 允许你按需组合状态和增量计算原语,而不是将它们捆绑在单一的 UI 组件抽象中。
  1. flufluflufluffy

    关于这项工作,Signals and Threads(Jane Street 的播客)有一期非常精彩的节目:https://signalsandthreads.com/building-a-ui-framework/

  2. bsmith89

    考虑到他们的库与 React/Vue 相比简直冗长得离谱,现在有 LLM 来处理样板代码真是件好事。

  3. chrischen

    > 而且因为 Bonsai 是用 OCaml 编写的,所以前后端可以使用相同的语言和类型。

    终于!我一直在等这个成为可能!

  4. rw2

    我敢肯定它性能非常出色,但在我看来它极其丑陋;肯定有人能在保持性能的同时把边距调好吧。

  5. cachius

    很好奇这与 Melange 相比如何,Melange 也被 OCaml 公司用来在前后端双重使用 OCaml(ahrefs 是主要用户和赞助商)。这是否意味着要放弃大量 JS 生态(React、graphql 等)?

同日更多故事

2026-08-03