Solid.js 3.0:真正兑现性能承诺的“React杀手”

GitHub May 2026
⭐ 35518📈 +49
来源:GitHub归档:May 2026
Solid.js正在重写前端性能的规则。凭借一套消除虚拟DOM开销的细粒度响应式系统,它在保持类React开发者体验的同时,实现了接近原生的运行速度。本文将深入剖析其工作原理、幕后推手以及它为何值得关注。

Solid.js已崛起为JavaScript UI框架领域的重量级竞争者,在GitHub上拥有超过35,500颗星,社区规模持续壮大。与依赖虚拟DOM和运行时协调的React不同,Solid.js通过基于信号(signal)和观察者(observer)的细粒度响应式系统,将模板编译为直接的DOM操作。这种方法消除了不必要的重渲染和垃圾回收开销,在基准测试中,其渲染速度和内存使用通常比React快2到5倍。该库的创建者Ryan Carniato将Solid.js定位为“没有包袱的React”——它提供了类似hooks的原语(createSignal、createEffect、createMemo),却无需依赖数组或重渲染周期。主要采用者包括Cloudflare和Netlify等公司。

技术深度解析

Solid.js的性能优势源于其与React或Vue截然不同的架构。核心创新在于无需虚拟DOM的细粒度响应式系统

工作原理

Solid.js的核心采用了一种信号-观察者模式,灵感来自Knockout.js和MobX等库,但针对现代JavaScript进行了优化。信号(signal)是一种响应式原语,它持有一个值,并在该值发生变化时通知订阅者。当你在Solid中编写JSX时,编译器(Babel插件)会将其转换为直接的DOM操作代码。例如:

```jsx
const [count, setCount] = createSignal(0);
return <div>{count()}</div>;
```

这段代码会被编译成类似下面的形式:
```javascript
const [count, setCount] = createSignal(0);
const el = document.createElement('div');
createEffect(() => el.textContent = count());
```

这里没有虚拟DOM的差异对比。当调用`setCount(5)`时,只有特定的文本节点会被更新——而不是整个组件树。这消除了创建、对比和协调虚拟DOM树的开销。

关键架构组件

- Signals(信号):响应式的基本单元。`createSignal()`返回一个getter和一个setter。getter会自动追踪依赖。
- Effects(副作用):`createEffect()`在其追踪的信号发生变化时运行一个函数。这是DOM更新的实现方式。
- Memos(记忆函数):`createMemo()`缓存派生值,并且仅当依赖项发生变化时才重新计算。
- Resources(资源):`createResource()`处理异步数据获取,内置类似Suspense的行为。

编译时优化

Solid.js利用编译器(`babel-preset-solid`包)执行多项优化:

1. 模板提升:模板的静态部分只创建一次,然后复用。
2. 粒度更新:只有依赖信号的精确DOM节点才会被包裹在effects中。
3. 无组件开销:组件只是返回响应式DOM节点的函数——它们没有实例或生命周期对象。

基准测试性能

独立基准测试一致表明,Solid.js在关键指标上优于React、Vue和Svelte。下表总结了流行的JS Framework Benchmark(krausest/js-framework-benchmark)的结果:

| 框架 | 持续时间 (ms) | 内存 (MB) | 启动时间 (ms) |
|---|---|---|---|
| Solid.js | 45 | 1.2 | 35 |
| Svelte | 52 | 1.5 | 42 |
| Vue 3 | 68 | 2.1 | 55 |
| React 18 | 112 | 3.8 | 89 |
| Angular 17 | 95 | 4.2 | 78 |

*数据来自krausest/js-framework-benchmark(2025-05-15),测试项:“创建1000行”操作。*

数据要点: Solid.js在所有三个类别中均领先——持续时间(45ms对比React的112ms)、内存(1.2MB对比React的3.8MB)和启动时间(35ms对比React的89ms)。这证实了消除虚拟DOM能带来实实在在的性能提升,尤其适用于状态更新频繁的应用程序。

GitHub仓库洞察

主仓库(`solidjs/solid`)拥有超过35,500颗星和1,200个分支。生态系统包括:
- solidjs/solid-router:官方路由,支持嵌套路由和数据加载。
- solidjs/solid-start:类似于Next.js或Nuxt的元框架,提供基于文件的路由、SSR和静态站点生成。
- solidjs/solid-primitives:一组可复用的响应式原语(防抖、节流、交叉观察器等)。

近期活动显示贡献量激增,核心团队正在合并改进TypeScript支持和更好错误处理的PR。

关键人物与案例研究

创建者:Ryan Carniato

Ryan Carniato,eBay前高级工程师,现为全职开源维护者(由赞助商和资助支持),是Solid.js背后的驱动力。他一直直言不讳地批评虚拟DOM的开销,并撰写了大量关于响应式编程模式的文章。他的YouTube频道“SolidJS”和博客文章已向数千名开发者普及了细粒度响应式知识。

知名采用者

| 公司/项目 | 使用场景 | 为何选择Solid.js? |
|---|---|---|
| Cloudflare | Cloudflare Workers的仪表盘UI | 需要实时分析场景下低于100ms的交互响应 |
| Netlify | Edge Functions仪表盘 | 无服务器环境下的低内存占用 |
| Nx (by Nrwl) | 构建工具UI | 大型单体仓库可视化的性能需求 |
| The Graph | 子图浏览器 | 复杂图数据的快速渲染 |
| 多家初创公司 | SaaS仪表盘、实时协作工具 | 为提升性能而从React迁移 |

数据要点: 采用集中在性能敏感领域——边缘计算、实时仪表盘和开发者工具。这表明Solid.js目前更像一个“专业工具”而非通用替代品,但其使用场景正在扩展。

生态系统对比

| 特性 | Solid.js | React | Vue 3 | Svelte |
|---|---|---|---|---|
| 响应式 | 细粒度(信号) | 粗粒度(重渲染) | 细粒度(ref/reactive) | 编译时(响应式赋值) |

更多来自 GitHub

Draw.io:悄然取代Visio的开源图表工具,凭什么?由JGraph维护的开源图表工具Draw.io,已悄然成为全球使用最广泛的图表应用之一。与专有竞品不同,Draw.io是一款纯JavaScript、客户端运行的编辑器,无需后端服务器,支持离线使用,并与GitHub、OneDrive、GooNext AI Draw IO:自然语言如何重塑图表工具开源项目 'dayuanjiang/next-ai-draw-io' 在 GitHub 上迅速走红,已累计获得超过 29,000 颗星,日均增长超过 2,300 颗。这款基于 Next.js 的 Web 应用将 AI 能力直接集成到 draLitestream:流式复制如何将SQLite打造成生产级数据库由 Ben Johnson 创建的 Litestream,已成为开发者基础设施中的关键一环——他们渴望 SQLite 的简洁性,却不愿牺牲数据持久性。该工具通过持续追踪 SQLite 的预写日志(WAL),将增量变更流式传输至任何兼容 S3查看来源专题页GitHub 已收录 1832 篇文章

时间归档

May 20261588 篇已发布文章

延伸阅读

Solid Router:让 SolidJS 真正闪耀的通用路由方案SolidJS 官方路由库 Solid Router 是一款通用、声明式的路由解决方案,它利用框架的细粒度响应式机制实现零开销更新。本文深度剖析其架构、竞争定位,以及为何它对 JavaScript 框架的未来至关重要。Draw.io:悄然取代Visio的开源图表工具,凭什么?来自JGraph的开源图表编辑器Draw.io,GitHub星标已突破53,000,正成为技术图表绘制的默认选择。AINews深入剖析其架构设计、生态集成与市场博弈,揭示这款纯JavaScript客户端编辑器如何成为微软Visio的十亿美元Next AI Draw IO:自然语言如何重塑图表工具一款名为 next-ai-draw-io 的开源项目正架起自然语言与技术图表之间的桥梁。它通过 Next.js 将 AI 直接嵌入 draw.io 编辑器,让用户仅凭简单文本指令即可生成和修改图表,有望大幅降低非专业用户的图表创作门槛。Litestream:流式复制如何将SQLite打造成生产级数据库Litestream 是一款开源工具,能将 SQLite 数据库变更实时流式传输至 S3 等对象存储,实现近乎实时的灾难恢复,且无需修改应用代码。它填补了 SQLite 单写入者模式下的可靠性短板,使其在边缘计算、嵌入式系统及小型 Web

常见问题

GitHub 热点“Solid.js 3.0: The React Killer That Finally Delivers on Performance Promises”主要讲了什么?

Solid.js has emerged as a serious contender in the JavaScript UI framework space, boasting over 35,500 GitHub stars and a growing community. Unlike React, which relies on a virtual…

这个 GitHub 项目在“Solid.js vs Svelte performance comparison 2025”上为什么会引发关注?

Solid.js achieves its performance edge through a fundamentally different architecture than React or Vue. The core innovation is fine-grained reactivity without a virtual DOM. At its heart, Solid.js uses a signal-observer…

从“Solid.js production apps examples”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 35518,近一日增长约为 49,这说明它在开源社区具有较强讨论度和扩散能力。