Web框架
五年前用原生 JavaScript 建的一个页面,现在维护成本已经高过一次完整的框架迁移;而你在 2019 年选的 JavaScript 框架包,如今很可能已经是套遗留系统。这种更替是真实存在的:React 连着发了 19 个大版本,Vue 从 2 跳到 3,Angular 在同一时间段从 13 一路奔到 19,Svelte 还引入了一种全新的编译器模型。所以今天要选一个 Web 框架,靠猜是代价很高的。这份指南把选择当作一组权衡来判断,而不是一场人气比拼。
为什么框架这道选择题越来越难
入门门槛一直在降,而选错框架的代价一直在涨。十年前你可以手写 jQuery 直接上线;今天的平均 React 应用在加任何组件之前,光 React-DOM 包就有大约 44 kB(gzip 后),这还没算路由、状态管理,以及许多团队随手加上的几十个库。相比之下,一个手工调优过的 Svelte 站点,相同面积可以压在 10 kB 以下。JavaScript 生态大概每两年复杂度就翻一番,这意味着你选的框架会成为你接下来三到五年里住在里面的约束。

代价不只是字节数。还有带新人的时间、调试依赖链的时间、解释"为什么同一个组件在手机上渲染不一样"的时间。一个贴合团队思维模型的框架能省下上千小时;一个跟团队对着干的框架会烧掉这些时间。所以这个决定应该是一个结构化流程,而不是个人立场之争。
你真正要在这四大类里选
撕开营销的包装,现代选项可以归为四个权衡截然不同的类别:

- 组件化响应式 UI 库,如 React、Vue、Svelte——它们只处理视图层,架构留给你。
- 全栈元框架,如 Next.js、Nuxt、SvelteKit——在基础库之上加路由、服务端渲染和构建工具。
- 服务端优先框架,如 Astro 和 Remix——通过服务端渲染 HTML、按需注入交互"岛屿"来最小化客户端 JavaScript。
- 后端驱动技术栈,如 Django、Rails、Laravel——复刻 MVC 模式,把多数逻辑留在服务端。
大部分团队其实不需要第二类那种完整火力。数量惊人的营销站、文档中心和内容产品,用第三类会更快、更轻地上线。开工前先回答四个问题:你的内容大多是静态还是高度交互?团队多大、经验如何?SEO 需要服务端渲染吗?这套代码库要用多久?答案会帮你排序这些选项。
主流工具一览
| 平台/工具 | 核心特点 | 价格/成本 |
|---|---|---|
| React | 组件模型、生态庞大、react-dom 约 44 kB(gzip)、虚拟 DOM diff、重度依赖第三方状态库 | 免费(MIT);复杂应用里换来的是可扩展性和维护成本 |
| Vue | 单文件组件、响应式系统、学习曲线平缓、官方路由和状态库 | 免费(MIT);小团队常常可以省掉额外库 |
| Svelte | 基于编译器、运行时极小(约 10 kB)、无虚拟 DOM、内置 store 和转场 | 免费(MIT);包更小但生态更年轻 |
| Next.js | React 元框架、文件式路由、SSR/ISR/SSG、中间件、边缘函数 | 免费(MIT);Vercel 有免费档,付费约 20 美元/月起 |
| Astro | 岛屿架构、默认零 JS、UI 无关(需要时可加 React/Vue)、内容集合 | 免费(MIT);Astro Studio 免费档,付费约 10 美元/月起 |
| Django | Python 全功能后端、ORM、自带管理后台、成熟模板引擎、强安全默认值 | 免费(BSD);含服务器成本、要求 Python 技能 |
从表里能看出三个模式。第一,"免费"的标签背后藏着真实成本:React 的生态自由意味着很多东西要你自己拼。第二,包体积是一条滑尺,Svelte 和 Astro 领先,完整 React 殿后。第三,框架选择其实是在选"渲染发生在哪里",而这决定了你的托管、缓存和性能预算。

读一读细则:生态、招聘与自研
一个被低估的因素是招聘市场。JetBrains 2023 年的开发者生态调查显示 React 仍是使用率最高的 Web 框架,约占 37%,Vue 占 19%。这个差距在你发出招聘启事时就体现出来了:React 开发更好找,但更贵,而且做低差异化工作时更留不住。如果你的产品是内容密集、交互适中的站点,为建它去买 React 人才是预算错配,用 Astro 或 SvelteKit 这种更轻的方案能省下一大笔。

生态成熟度在长期也会咬人。Vue 有出色的官方路由和状态库,把决定权集中起来、降低了"关键人物依赖"。React 则要你在 Redux、Zustand 和 React Query 之间做状态选择,每个选择都可能变成团队里的"宗教"。这对大型平台团队没问题;对小团队来说就是一笔税。请根据你实际雇得起多少维护者来权衡框架,而不是对照一个假想中的满编团队。
无障碍不是功能,是基线
你选的任何框架都不能破坏无障碍。相当多的 React 组件自带焦点陷阱,会破坏键盘导航,或者后期才补的 aria 属性。WebAIM Million 研究反复发现大约 96% 的高访问量首页存在可检测的 WCAG 缺陷,其中很多就来自把语义当作事后才想的组件库。如果你采用组件密集型技术栈,你就继承了它的无障碍名声。Svelte 和 Astro 因为优先纯 HTML,默认更容易产出无障碍标记,而 React 和 Vue 要求组件作者有纪律。无论选哪个,都要给真实的无障碍验收留出预算,不要假设框架能救你,并且把可衡量的JavaScript 入门基础牢固地打在人人都该懂的前端地基上。

在两条最常见的路之间选
如果你的团队已经定了 React,实际决定就收窄为要不要加一个元框架。用 Vite 跑裸 React,对登录后的仪表盘这类场景非常好用——SEO 几乎无关紧要,用户也不用装什么。但公共营销页、博客内容和一切要排名的东西,服务端渲染或静态生成几乎不可避免。Next.js 给你从静态导出到服务端组件的完整光谱。代价是复杂度:文件约定、中间件、边缘函数都要学。不喜欢 React 却想要它生态的团队,Nuxt 提供了相同思路的 Vue 版,学习曲线更缓。我的经验法则是:如果超过一半页面是内容,优先选择默认输出 HTML 的渲染策略,只在值得为字节付出代价的地方加客户端交互。而这正是Python 入门指南这类结构化学习路径想帮你建立的直觉——结构、测试和性能的模式,跨框架都能迁移。
真实项目的决策树
- 产品主要是带轻度交互的公开内容站?如果团队会 React,选 Astro;想要一整套 SSR 默认值,选 Next.js。
- 是登录后的重度交互单页应用,比如仪表盘或编辑器?倾向 React 配 Vite 或 Vue,完全避开服务端渲染。
- 你的后端团队已经会 Python,或者想要一个前端代码最少的管理后台?选 Django,用服务端模板渲染。
- 团队小、工期紧?选 SvelteKit,心智负担和包体积都最小。
- 这个季度要用小团队低风险上线?选你们现有的人最熟的技术栈,即使它不潮流。
不存在客观上"最好"的框架,只有最适合你约束的框架。大多数严肃项目的入门成本不是框架授权费,而是你未来多年要付的维护、招聘和性能预算。选型时把框架放在你已有的知识体系里会事半功倍,本站的JavaScript 入门(英文)和Web 开发基础(英文)能把底层语言和平台认知补齐,让你评价各种框架时更有把握。想在这个领域打好结构化基础,可以顺着转行做技术的路径系统推进。
常见问题
做基础展示型站点到底需不需要 JavaScript 框架?
几乎不需要。用纯 HTML 加点 CSS 建静态站,或者用 Astro 这种轻量工具,会加载更快、托管更便宜、也更好维护。只有当你需要共享状态、复杂交互或一大队组件作者时,才值得引入响应式框架。
2026 年 React 还是默认选项吗?
对大型团队和复杂应用,往往是——招聘池和生态无出其右。但对内容密集的小团队来说,它经常是过度投入。应该把应用的不同层面匹配到合适的框架,而不是到处默认 React。
已经会一个框架,学新框架最快的方式是什么?
做一个真实功能,而不是做待办清单。用官方教程起步,再把一个小组件迁移过去。牢固理解浏览器如何解析和绘制,能帮你搞清楚框架之间为什么有差异。把框架搭配一套完整的开发实践结构化指南来学,而不要东一榔头西一棒。
框架选择对页面速度分数影响大吗?
相当大。超过 200 kB 的包在慢连接上能多出好几秒。Svelte 和 Astro 相仿页面通常能在 30 kB 以下,未优化的 React 应用却经常冲破 150 kB。但框架包体积的影响其实不如图片、字体和阻塞渲染的脚本大,所以别急着怪框架,先对整个页面做一次审计。
一个项目里能混用两个框架吗?
可以,Astro 就是为这个而造的(岛屿架构)。你可以在同一个页面挂一个 React 组件和一个 Vue 组件。代价是重复的运行时和更高的复杂度,所以框架数量尽量少、隔离尽量好。大多数团队只在迁移期这么做。