@evanyou: 回答一个常见问题——为什么不把React编译器做成插件?这一切都归结于实际的权衡。将i…
摘要
Evan You解释了为什么将React编译器直接集成到OXC(Rust)中相比插件方法能带来显著的性能提升,同时讨论了二进制大小问题和AST传输的未来计划。
查看缓存全文
缓存时间: 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理解我们的限制条件。
初步
相似文章
将React编译器移植到Rust
一项将React编译器移植到Rust的计划,旨在提高性能并与Rust生态系统集成。
Octane – React 编程模型的编译实现
Octane 是一个编译式前端框架,将 React 的编程模型——hooks、Suspense 和 actions——与预先编译(AOT)相结合,没有虚拟 DOM,也没有 hooks 规则。
@freeCodeCamp: Large React apps get harder to scale when every feature has to live inside the core codebase. In this tutorial, Jessica…
This tutorial explains how to design a type-safe, lazy-loaded, and secure plugin architecture in React using TypeScript, covering plugin lifecycles, bundling, and runtime loading.
真的有人喜欢 React 吗?
关于 React 的批评性博客文章合集,涵盖性能问题、一个严重安全漏洞(CVE-2025-55182,CVSS 10.0)以及更广泛的生态系统问题。
自举 Rust 被认为有害
对 Rust 编译器自举过程的批判性分析,指出与 OCaml 等其他语言相比,其体积过大和依赖臃肿的问题,并主张采用更轻量的方法。