React疲劳,以及「自由选择」的时代
- 年的前端领域,正处于从React单一文化中明确脱离的转折期。StackOverflow 2026年调查显示,React的「喜爱框架」回答率从2022年的68%下滑至49%,取而代之的是Svelte(48%)、Astro(41%)、Qwik(22%)、Solid(19%)的崛起。本文将从项目选型的视角对Astro 5、Qwik 2、Svelte 5(runes)、Solid Start 1.0进行深度比较。
Astro 5:内容驱动型的绝对王者
Astro 5于2026年1月发布,带来了Server Islands、Content Layer API以及View Transitions正式稳定化三大更新。Astro的核心理念是「默认零JavaScript」。纯HTML和样式就能满足的部分以Astro组件形式静态渲染,只有交互式的岛屿(Islands)才会选择性地水合(hydrate)。
Server Islands是5.0的亮点,只需写`<LoggedInUser server:defer />`,该部分就会在请求时fetch。静态HTML长期保存在CDN边缘,动态部分通过独立请求延迟解析。Content Layer API统一处理Markdown/MDX以及Sanity、Contentful、Notion、本地YAML,并自动化类型生成。
弱点是不适合「富SPA」。Islands之间的状态共享繁琐,最终往往还是要全面采用React/Svelte。Astro在「复杂交互占整体20%以下」的场景中最为出色。
Qwik 2:Resumability的认真实践
Qwik 2于2025年底发布,从Builder.io主导转型为独立社区运营。核心哲学是Resumability——将传统的hydration视为「在客户端重新执行服务端已完成的处理,是一种浪费」,构建只在需要时才加载所需代码的架构。
具体而言,代码以`$`为边界分割,在用户点击按钮之前,点击处理器的JavaScript一行都不会下载。首次加载执行的JS理论上为O(0),实测也控制在2至4KB左右。Lighthouse分数常态性接近100,正是这一机制的直接结果。
Qwik 2新增了Async Components、Component Resumability API以及Signal的正式稳定化。Qwik的Signal与Solid的Signal类似,提供细粒度响应性(fine-grained reactivity),状态变更只重新渲染依赖的组件。
Qwik擅长的领域是「体量大且内容繁重的电商/内容站,且交互也丰富」的场景——Astro会显得沉重,React/Next.js的hydration成本又难以承受的「中间地带」。但开发体验(DX)至今仍不够精致,`$`边界规则、useTask$与useVisibleTask$的使用区别,以及难以阅读的错误信息,都使学习曲线相当陡峭。MUI或Chakra等成熟UI库目前尚无Qwik版本。
Svelte 5 runes:从「魔法」到「显式声明」
Svelte 5于2024年底发布,到2026年生态系统才刚刚追上runes时代的步伐。runes重新定义了Svelte的响应式系统,废弃了`let count = 0`自动变为响应式的「魔法」,改为`let count = $state(0)`的显式声明方式。
乍看像是倒退,但这大幅改善了大型应用的可调试性和类型推断。通过`$derived`、`$effect`、`$props`四个基本原语可以表达所有响应性,Svelte 4以前那种「在行外发生的魔法」消失了。与TypeScript的亲和性也显著提升。
SvelteKit 2基于adapter设计,可从同一代码库部署到Vercel、Cloudflare、Netlify、Node.js、静态站点等任意目标。流式SSR、表单Action、`+page.server.ts`实现server-only逻辑分离等Next.js式功能,通过更简洁的API实现。Svelte的优势在于出色的开发体验,在State of JS 2025「还想继续使用」指标中以85%位居所有框架之首。弱点是生态系统厚度,与React Aria同等水平的headless UI选项仍然有限。
Solid Start 1.0:React API + 细粒度响应性
Solid Start于2025年到达1.0版本,成为配备SSR、流式渲染、基于文件的路由的Solid.js官方元框架。Solid的定位是「React的API + Svelte的响应性模型」,使用createSignal和JSX让React开发者几乎零学习成本上手。
Solid没有虚拟DOM,JSX在编译时直接转换为DOM操作代码,只有发生状态变更的DOM节点才会更新。运行时开销约为React的1/3,bundle也更小。在Astro的Islands中局部使用Solid的方案也很流行,两者相性极佳值得特别关注。
选型矩阵:从三个维度如何选择
内容优先型(博客、文档、营销落地页、新闻站)Astro 5压倒性胜出。零JavaScript起步的灵活性、Content Collections的开发体验、View Transitions的SEO兼容性——每一项都无出其右。不知道选什么就选Astro。
交互优先型(仪表盘、SaaS、管理后台、实时应用)在React/Next.js与Svelte 5之间二选一。生态系统厚度和团队招聘难度考虑选React,开发体验与bundle效率选Svelte。现实中「有现有资产选React,新项目认真考虑Svelte」的决策思路相当有效。
中等规模电商/门户(内容50% + 交互50%)Qwik 2是值得考虑的有趣选择。这是Resumability收益最大化的领域,但仅限于能接受生态系统尚不成熟的团队。如果是寻求长期技术优势的初创公司,值得押注一试。
想要React式开发体验但希望优化bundle与速度时,Solid Start 1.0是被低估的黑马。React开发者一天内可以适应,性能表现大幅领先。非常适合逐步替换现有React组件的「绞杀者模式(Strangler Pattern)」。
总结:「非React」时代的决策
- 年的前端选型,已从以React为默认值的时代,迁移至根据项目特性选择最优解的时代。Astro、Qwik、Svelte、Solid每一个在技术上都已成熟,已没有理由再以「小众框架」为由将其排除在选项之外。重要的是正确理解各框架所解决的问题。内容优先选Astro,简洁开发体验选Svelte,极致首次加载性能选Qwik,React兼容的高速化选Solid。带着这张地图去迎接下一个项目吧。