Web 开发领域始终在不断演进,过去一年也不例外。我们知道,你忙于迭代和发布新功能,难以时刻关注行业的所有动态。
幸运的是,Netlify 汇聚了一群热衷于打造更优质 Web 体验的技术爱好者。我们的框架工程团队始终紧跟技术趋势,并认真记录行业动态(你绝对不会想知道我们加入了多少个 Discord 服务器)。正因如此,我们才能为 Next.js 15、Svelte 5、Angular 18、Astro 5 ,甚至 Nuxt 4 提供预发布支持的关键所在。那么,为什么不把这些技术洞见分享给开发者社区呢?
继续阅读,了解过去一年的技术趋势与意外变化,速览前端框架的重要更新(涵盖十余项重大版本发布及多款新兴框架),并掌握未来的发展方向,助你始终站在技术前沿。
Next.js 的 Server Actions 在跨越浏览器与服务器的鸿沟时,提供了类似 tRPC 的开发体验:从浏览器调用服务器上的函数时,框架会在底层将其转换为发送给服务器的 fetch 请求,并提供完整的类型安全。
2024 年,这一模式已扩展至其他全栈框架:
React 19 正式推出了稳定版 Server Functions,通过新的“use server
”指令实现对 Server Actions 的通用化。
Astro 正式发布了稳定版 Actions,遵循相同的模式。
SolidStart 1.0 发布时支持了 Solid Actions,并引入了更通用的“use server
”指令。(虽然 1.0 版本 2024 年才推出,但这是该模式的首个实践。)
TanStack Start 推出了一个支持 Server Functions 的测试版,能够从浏览器(自动转换为 fetch 请求)和服务器(按原样)进行调用。
早期,有 SSG (Static Site Generation,静态网站生成)和 SSR (Server-Side Rendering,服务器端渲染)。近年来,许多框架开始支持混合模式,允许部分路由进行预渲染(或静态渲染),而其则动态渲染。Next.js 的 App Router 甚至可以基于启发式规则自动实现这一功能。
最近,框架在此基础上进一步发展,允许页面的某些部分进行预渲染(Static Shell,静态外壳),而其余部分则在服务器上动态渲染。React 通过
和 Streaming SSR 推广了这一模式,但直到最近,元框架(meta-framework)才开始全面实现这一特性:Remix 自 2023 年起便已支持,而 Next.js 则在同年首次宣布对所谓的部分预渲染“Partial Prerendering (PPR) ”提供实验性支持。
![图片]()
这可能需要单独撰写一篇文章,但以下是 2024 年更新的核心要点:
在 Next.js 14 中试验性使用 PPR 一年后,Next.js 15 发布并未对 PPR 进行任何更新,因为团队仍在应对该特性暴露出的复杂性。
React Router 7 发布了与 Remix 2 相同的功能。
新兴的基于 React 的框架 TanStack Start 发布了 Beta 版,采用 相同的模式。
Astro 5 发布了 Server Islands,满足类似需求,但采用了基于 Web 标准的实现,允许任何平台缓存静态外壳,甚至是独立的动态部分。
为实现浏览器中的交互性,同时避免让开发者手动管理所有状态(例如 jQuery)或在每次变更时重新渲染整个页面,框架必须追踪网页 UI 和数据中所有变量间复杂的依赖关系网络。这通常被称为框架的“响应式”(reactivity)模型。
框架的响应式模型是各框架独特性的核心之一。它体现在语法规则和约束中,塑造开发者的思维方式,决定了性能的优劣,也是常见的 Bug 来源!以 React 为例,你可能已经熟悉 React 的响应式模型:Hooks(2018 年 React 16.8 引入)及更早的shouldComponentUpdate
方法。
![图片]()
2010 年首个框架问世以来,响应式模型经历了多次变化。(如需更深入了解,请参阅 A Hands-on Introduction to Fine-Grained Reactivity、The Evolution of Signals in JavaScript)或 Solid.js 作者 Ryan Carniato 的相关著作。)2024 年,我们正见证新一轮技术变革,三大主流框架相继推出全新响应式模型:
Svelte 5 引入了 Runes,其灵感主要来自 Solid.js 的 Signals。
Angular 18 引入了实验性的“无 Zone.js ”变更检测,并在 Angular 19 中继续迭代基于 Signals 的新的响应式模型。
React 发布了 React Compiler 的 Beta 版,这种方法依赖于构建时的静态分析来计算组件的依赖关系。这种方法已被 Svelte 使用多年,但与大多数框架(如 Vue)常用的运行时 响应式模型有很大不同。
此外,一项为 JavaScript 引入标准 Signal 实现的提案已于 2024 年进入第一阶段。
Astro 是一个相对较新的前端框架,近期备受关注(在最新发布的 State of JS 2024 报告中,Astro 在兴趣度、留存率和用户满意度三项指标中均位列第一)。
![图片]()
虽然 Astro 仍然坚守其内容驱动型网站轻量级框架的定位,但在 2024 年添加了多个关键功能,以回应部分批评:
Actions:Astro 对 Next.js Server Functions 的回应(参见上文)。
Server Islands:Astro 对 Next.js 部分预渲染(PPR)功能的回应(参见上文)。
Content Layer:Astro 对 Gatsby 的 GraphQL 数据层的回应。
Sessions:Astro 提供的一种实验性的存储无关解决方案,用于处理用户会话(类似 Remix sessions、NuxtAuth、NextAuth.js)。
Astro DB 和 Astro StudioAstro:不再坚持自建 SaaS,而是转向平台无关的数据库接口层,可与关系型数据库对接。
Vite 是一款功能齐全的打包工具、编译器和开发服务器,专为 Web 开发设计。
2024 年,它成为 Web 开发者的首选工具,无论是 React、Vue、Svelte,甚至是无框架开发,Vite 都备受青睐。凭借其在性能、开箱即用功能和极高可配置性方面的优势,在短短几年内迅速崛起。
Vite 还是 Astro、Nuxt 和 SvelteKit 等元框架的底层构建工具—— 事实上,这种双重性正是 Vite 成功的一个重要原因。
2024 年,Remix 发布了对 Vite 的支持(并随后放弃了自家编译器)、Hydrogen 也切换到 Vite,甚至传统的 Ember.js 框架也开始向 Vite 过渡。
至此,Next.js(Webpack/Turbopack)和 Gatsby(Webpack)成为仅存的两个仍未采用 Vite 的主要前端元框架。
Nitro 是一个功能全面的服务器引擎库,为框架提供通用开发和生产服务器层,支持多种部署目标,如 Node.js、Deno、Netlify Functions、Netlify Edge Functions、Cloudflare Workers 等。
过去,Nitro 仅被 Nuxt 使用。
2024 年,AnalogJS 1.0 发布、SolidStart 1.0 发布,以及 TanStack Start 宣布发布并迅速进入 Beta 阶段。这三个新兴框架均基于 Vite 和 Nitro。更重要的是,这一组合被重新打包成名为 Vinxi 的中间层,并被 SolidStart 和 TanStack Start 采用,大大降低了新框架的入门门槛。
此外,Angular 还宣布,他们正在探索迁移到 Nitro。
2024 年是兼容性大幅提升的一年!
Deno 2 推出,完整兼容 Node.js 和 NPM 模块。所有框架现在都可以在 Deno 运行时上运行!
Cloudflare Workers 运行时大幅提高了与 Node.js 和 NPM 模块的兼容性。
Bun 在这一年中逐步增加了对 Node.js 的兼容性。
Next.js 宣布支持在中间件运行 Node.js 运行时。
Vite 6 发布了环境 API,未来将为多个框架的运行时和平台兼容性带来改进(见下文)。
Next.js 在开放性方面取得了显著进展:
由 SST 发起的 OpenNext 计划吸引了 Cloudflare 和 Netlify 的加入。
Next.js 15 在自托管方面也做出了改进,丰富了相关文档。
Vercel 成立了独立的 Next.js GitHub 组织,提供了部署到 Vercel 竞品的示例。
Node.js 的新特性:
用 Rust 编写新编译器和打包工具的多项工作正在进行中,并在 2024 年取得了显著进展:
![图片]()
Turbopack,Next.js 对 Webpack 的 Rust 替代方案,在开发阶段被标记为稳定版,并将很快成为默认设置。
Rspack,Webpack,Webpack) 的 Rust 直接移植,已发布稳定的 1.0 版本。
Rolldown 是用 Rust 编写的与 Rollup 兼容的打包工具,在圣诞节发布了 Beta 版,获得了资金以加速其开发,同时发布的还有 Vite 和 Oxc。在不久的将来,Rolldown 将取代 Rollup 和 ESBuild,成为 Vite 的底层引擎,构建速度和开发服务器性能都将提升一个数量级。
在 2024 年,Next.js 15、React Router 7、Astro 5、Nuxt 4 和 Svelte 5 都提供了官方(甚至是内置)的升级工具(代码迁移工具)。大多数工具依托 Codemod.com 平台开发并发布的,极大简化了代码迁移的过程。
过去,要么推迟痛苦的升级,要么选择早期不稳定版本。如今,许多框架都采用了 “未来标志(Future Flags)” 模式,不稳定的新功能和重大更改作为可选配置发布,可以根据需求选择性启用,而无需等待下一个大版本。著名的例子包括 Astro 的实验性标志、 Remix 的未来标志 和 Angular 的实验性提供者等。
![图片]()
一些框架(如 Nuxt)将这种方法的优势发挥到了极致 —— 你可以将 compatibilityVersion
设置为 4
, 在 Nuxt 3 中选择启用 Nuxt 4,这实际上只是切换了十几个特性和重大更改。一旦 Nuxt 4 发布,这些切换将成为默认设置。
尽管 TypeScript 占据主导地位多年,但在 Web 框架中仍有一个小而重要的领域没有完全类型支持:路由参数、查询参数以及基于文件的路由间交叉引用。
![图片]()
在 2024 年,我们看到新兴框架 TanStack Start 采用了全新的方法解决这一问题,它为基于文件的路由提供了 100% 的端到端类型安全,其中大部分类型甚至可以自动推导。另一方面,Remix 的继任者 React Router 7 放弃了完全基于文件的路由,并引入了类型生成步骤,以实现类似的效果。与此同时, Next.js、Nuxt 和 Qwik 也在开发各自的解决方案。
正如上述所有动向所表明的,前端框架的发展节奏依然迅猛,这很大程度上归功于新兴框架的创新与推动。以下是 2024 年值得关注的一些框架,或许能成为你 2025 年的研究项目:
AnalogJS:Angular 生态的元框架(自 2024 年 3 月起稳定发布)
Deno Fresh:基于 Preact 的框架,针对边缘渲染进行了优化(自 2022 年 6 月起稳定发布)
HTMX:回归 Web 基础的框架(自 2020 年 11 月起稳定发布)
One:基于 React 的实验性框架(2024 年 10 月刚刚发布)
RedwoodJS:内置众多功能的全栈 React 框架(2022 年 4 月稳定发布)
SolidStart:Solid.js 生态元框架(自 2024 年 5 月起稳定运行)
TanStack Start:新的 React 元框架(自 2024 年 12 月起进入 Beta 阶段)
Qwik,引入 resumability 替代 hydration 的新型框架(2023 年 5 月稳定发布)
2024 年共有 11 个 重要的前端框架版本发布:
此外,还有一些重要的生态项目发布:
4 月 24 日:Node.js 22
8 月 28 日:Rspack 1.0
10 月 3 日:bolt.new
10 月 9 日:Deno 2
11 月 26 日:Vite 6
2024 年,一些核心项目宣布了融资和合作消息:
3 月 26 日:Builder.io 将 Qwik 交由社区运营
4 月 24 日:Builder.io(Qwik 的维护者)获得 2000 万美元融资
7 月 15 日:Astro 与 Netlify 合作
9 月 30 日:Evan You 成立 VoidZero,获得 460 万美元风投,以支持 Vite、Vitest、Rolldown 和 OXC 发展。
12 月 2 日:Astro 与谷歌合作
![图片]()
框架对来自浏览器的单飞请求(Single Flight)机制表现出了重新关注:Remix 引入了 Single Fetch(现已成为其继任者 React Router 7 的默认设置),SolidStart 1.0 推出了 Single Flight Mutations,TanStack Start 也在进行同样的工作。
Angular 推出了 Event Replay 功能:允许在页面尚未完全交互化时捕获用户操作,并在页面加载后回放,目前尚不清楚其他框架是否会跟进。与此同时,Qwik 通过设计 resumability (恢复性渲染)完全绕过了这个问题。
Astro 通过与生态系统的合作推动 Web 标准改进,不仅让自身受益,也让整个 Web 变得更好。
2024 年底,大部分 Web 开发社区大规模迁移到了 Bluesky。
![图片]()
Angular** 预计将在 5 月发布 Angular 20,11 月发布 Angular 21**。请查看 Angular 路线图,了解即将发布的内容。
Node.js 18 将于 4 月达到生命周期结束 (EOL) 状态。请务必尽快升级你的应用。(Netlify 也建议尽早升级到 Node.js 22。)
Nuxt 4 预计将在 2025 年正式发布,目前已基本准备就绪。(在 Netlify 上可提前体验)。
Vite 引入环境 API 将于 2024 年底在 Vite 6 中发布,它将极大地改善许多基于 Vite 的框架的本地开发体验,尤其是在稳定性、生产环境一致性和运行时兼容性方面。
TanStack Start 预计将在 2025 年发布 RC 版本,甚至可能是 1.0 正式版。
Qwik 2.0 将发布。
TanStack 和 Netlify 可能会有新合作。👀
原文链接:
https://www.netlify.com/blog/2024-frameworks-year-in-review/
声明:本文由 InfoQ 翻译,未经许可禁止转载。
Svelte 不是 JavaScript
npm 够用吗?初创企业为何追捧这个 JavaScript 软件包注册表?
Dagger:我们用 GO 和 WebAssembly 替换了 React 前端
用了 7 年 Web 组件,踩坑无数,我终于看清了的真相
在 AI 大模型重塑软件开发的时代,我们如何把握变革?如何突破技术边界?4 月 10-12 日,QCon 全球软件开发大会· 北京站 邀你共赴 3 天沉浸式学习,跳出「技术茧房」,探索前沿科技的无限可能。
本次大会将汇聚顶尖技术专家、创新实践者,共同探讨多行业 AI 落地应用,分享一手实践经验,深度参与 DeepSeek 主题圆桌,洞见未来趋势。
![图片]()