@evanyou: 回答一个常见问题——为什么不把React编译器做成插件?这一切都归结于实际的权衡。将i…

X AI KOLs Following 工具

摘要

Evan You解释了为什么将React编译器直接集成到OXC(Rust)中相比插件方法能带来显著的性能提升,同时讨论了二进制大小问题和AST传输的未来计划。

回答一个常见问题——为什么不把React编译器做成插件? 这一切都归结于实际的权衡。将其做成基于Rust的插件已经比Babel版本快得多(高达15倍),但由于作为插件带来的数据传递/AST克隆开销,仍然比直接在Oxc中慢50%。 这也与Vue或Svelte等情况不同,它们有完全不同的AST格式;React编译器工作在Oxc已经支持的JS/JSX AST上(仅有轻微格式差异)。通过将其集成到Oxc中,我们可以消除大量AST克隆/转换开销,这对其他框架来说是不可行的。放弃如此大的性能优化机会将是一种遗憾。 我们也完全清楚,集成它会导致未使用React编译器的用户二进制文件变大,这就是为什么我个人阻止了导致约5MB增加的版本。我们的目标是将其降低到合理水平,同时全面优化二进制大小,以最小化负面影响。 从长远来看,我们的目标是让原始AST传输(已用于oxlint JS插件)适用于转换插件。这将使我们能够在不产生AST克隆性能开销的情况下发布oxc插件。
查看原文
查看缓存全文

缓存时间: 2026/06/24 01:56

回答一个常见的问题——为什么不把React Compiler做成一个插件?

这归根结底是实际权衡的问题。将其做成基于Rust的插件已经比Babel版本快得多(高达15倍),但由于作为插件需要传递数据和克隆AST的开销,仍然比直接集成在Oxc中慢50%。

这也与例如Vue或Svelte等框架不同,它们使用完全不同的AST格式;而React Compiler处理的是Oxc已经支持的JS/JSX AST(仅有细微格式差异)。通过将其集成到Oxc中,我们可以消除大量AST克隆/转换开销,这对其他框架来说是做不到的。如果白白放弃如此大的性能优化机会,那将非常可惜。

我们也完全清楚,集成它会导致不使用React Compiler的用户的二进制体积变大,因此我个人阻止了那个导致体积增加约5MB的版本。我们的目标是将其降到合理水平,同时全面优化二进制体积,以将负面影响降至最低。

长远来看,我们的目标是让原始AST传输(已在oxlint JS插件中使用)也适用于转换插件。这样我们就能在不产生AST克隆性能开销的情况下发布oxc插件。

Boshen (@boshen_c): 我们从Rolldown和Vite中撤回了Rust React Compiler的集成,因为它使二进制体积从28.7MB增加到33.8MB,增幅达17%,这对所有Vite用户来说是无法接受的。

我目前正在尝试让Claude理解我们的限制条件。

初步

相似文章

Octane – React 编程模型的编译实现

Hacker News Top

Octane 是一个编译式前端框架,将 React 的编程模型——hooks、Suspense 和 actions——与预先编译(AOT)相结合,没有虚拟 DOM,也没有 hooks 规则。

真的有人喜欢 React 吗?

Hacker News Top

关于 React 的批评性博客文章合集,涵盖性能问题、一个严重安全漏洞(CVE-2025-55182,CVSS 10.0)以及更广泛的生态系统问题。

自举 Rust 被认为有害

Lobsters Hottest

对 Rust 编译器自举过程的批判性分析,指出与 OCaml 等其他语言相比,其体积过大和依赖臃肿的问题,并主张采用更轻量的方法。