我决定暂时放下React 转用Svelte

我做了一个违背祖训的决定...

作为一名多年经验的服务端开发,习惯了 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只有手动挡的性能优化:
    本来只是想渲染一个列表,结果发现父组件一动,子组件全部重新渲染了。
    我有单次渲染强迫症,我就希望最好只有一次渲染。
    于是被迫到处包一层 useMemouseCallbackReact.memo
    这感觉就像是在手动管理内存,而不是在写业务。开发者的注意力就被分散了。

  • Hooks 的闭包陷阱: 在很多异步操作中,或者在闭包的场景下,假如你引用了State,就需要小心拿到的变量值是旧值。 初学者可能需要很久才会发现这的问题。因为这并不直观。

总结一下: 我发现我在使用react时,需要花费很多时间在思考我这代码是不是符合react的最佳实践呢,是不是不小心重复渲染了呢? 有时候这部分用掉的时间,超过了“思考业务逻辑”的时间。这很不好。

寻找替代品 SolidJS vs Svelte

由于这些痛点,我开始寻找更直观的框架。
目光自然锁定在了两个在论坛上被经常提起的名字:SolidJSSvelte

  • 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

使用 Hugo 构建
主题 StackJimmy 设计