作为一名多年经验的服务端开发,习惯了 JAVA/Go/Python 那种自上而下、逻辑确定的执行流。
当我转到全栈,深入使用了 React 18/19 后,虽然觉得React的生态真的是繁荣,比如光一个状态管理就有很多选择。
但是在日常的开发中,我越来越感觉到一种框架把它应该做的活扔给了我的疲惫感。
所以我在想,为什么我写react时会觉得心累? 大概有如下几个原因。
react的问题
React是有渲染状态的, React 的核心哲学是 UI = f(State),这很好。
但为了维持这个纯函数式的幻觉,React 引入了很多非业务逻辑需要的复杂度。
各种hook的负担: 从
useState开始,直接有useRef,useEffect,useContext,useReducer,memo,useMemo,useCallback…等一堆概念需要学习,熟悉,了解最佳实践和坑点。需要担心依赖数组: 大家都知道写很多hook都有依赖数组
比如写useEffect时,就必须小心翼翼地维护依赖数组。少写了导致闭包陷阱,多写了会导致无限循环。需要担心性能优化: React只有手动挡的性能优化:
本来只是想渲染一个列表,结果发现父组件一动,子组件全部重新渲染了。
我有单次渲染强迫症,我就希望最好只有一次渲染。
于是被迫到处包一层useMemo、useCallback和React.memo。
这感觉就像是在手动管理内存,而不是在写业务。开发者的注意力就被分散了。Hooks 的闭包陷阱: 在很多异步操作中,或者在闭包的场景下,假如你引用了State,就需要小心拿到的变量值是旧值。 初学者可能需要很久才会发现这的问题。因为这并不直观。
总结一下: 我发现我在使用react时,需要花费很多时间在思考我这代码是不是符合react的最佳实践呢,是不是不小心重复渲染了呢? 有时候这部分用掉的时间,超过了“思考业务逻辑”的时间。这很不好。
寻找替代品 SolidJS vs Svelte
由于这些痛点,我开始寻找更直观的框架。
目光自然锁定在了两个在论坛上被经常提起的名字:SolidJS 和 Svelte。
- SolidJS:极致的性能,细粒度更新,没有 Virtual DOM。它的 createSignal 比 React 的 useState 更符合逻辑直觉。
- Svelte:编译型框架,在很多场景下,代码量能比 React 减少 30% 以上,同样没有 Virtual DOM,主打像写原生 HTML/JS 一样简单。
为什么我最终选择了 Svelte?
在我细致地去了解这两个框架的能力之后,我个人感觉他们都很好,都成功解决了react的痛点 –> 让写业务更加符合直觉,性能也更好。
既然都能解决核心问题,那么我作为一个非专业向的前端,我最关心的其实就是社区热度。
有社区热度的框架,活得更久,适配的轮子更多,遇到问题也好查资料。
那从目前的情况来看(今天是2025-12-13) ,Svelte目前比solid有更好的社区热度和社区支持,
- Svelte –> github star 80k / NPM 周下载量 200万+
- solid –> github star 35k / NPM 周下载量 20万+
企业背景与就业市场
- 企业背书: Svelte 的创始人 Rich Harris 加入了 Vercel(Next.js 的开发商)
这意味着 Svelte 拥有更好的资金保障,未来发展会比较稳定,不存在突然停止更新的情况。 - 就业机会: 虽然远少于 React 和 Vue,但在很多初创公司 Svelte 的招聘需求也正在增加。
上次爆出一个新闻,apple用Svelte重写了网页版App Store。只也是 Svelte 热度的表现吧。
最后结语
我觉得个人项目写代码,最后还是要回归开发本身的乐趣的。
Svelte成功让我找回了刚开始学编程时的那种简单和快乐 -> 定义变量,修改它的值,界面随之改变。就这么简单。
可能 Svelte 不是大厂招聘的硬通货(那是 React/Vue 的地盘),但它绝对是独立开发者的好东西。
所以,作为一个独立开发者,所以我使用Svelte来代替React