作者 | Philippe Serhal
译者 | Sambodhi
策划 | Tina
Web 开发领域始终在不断演进,过去一年也不例外。我们知道,你忙于迭代和发布新功能,难以时刻关注行业的所有动态。
幸运的是,Netlify 汇聚了一群热衷于打造更优质 Web 体验的技术爱好者。我们的框架工程团队始终紧跟技术趋势,并认真记录行业动态(你绝对不会想知道我们加入了多少个 Discord 服务器)。正因如此,我们才能为 Next.js 15、Svelte 5、Angular 18、Astro 5 ,甚至 Nuxt 4 提供预发布支持的关键所在。那么,为什么不把这些技术洞见分享给开发者社区呢?
继续阅读,了解过去一年的技术趋势与意外变化,速览前端框架的重要更新(涵盖十余项重大版本发布及多款新兴框架),并掌握未来的发展方向,助你始终站在技术前沿。
框架相互“抄作业”
Server Functions 模式广泛普及
Next.js 的 Server Actions 在跨越浏览器与服务器的鸿沟时,提供了类似 tRPC 的开发体验:从浏览器调用服务器上的函数时,框架会在底层将其转换为发送给服务器的 fetch 请求,并提供完整的类型安全。
2024 年,这一模式已扩展至其他全栈框架:
use server
”指令实现对 Server Actions 的通用化。use server
”指令。(虽然 1.0 版本 2024 年才推出,但这是该模式的首个实践。)组件级预渲染成为主流
早期,有 SSG (Static Site Generation,静态网站生成)和 SSR (Server-Side Rendering,服务器端渲染)。近年来,许多框架开始支持混合模式,允许部分路由进行预渲染(或静态渲染),而其则动态渲染。Next.js 的 App Router 甚至可以基于启发式规则自动实现这一功能。
最近,框架在此基础上进一步发展,允许页面的某些部分进行预渲染(Static Shell,静态外壳),而其余部分则在服务器上动态渲染。React 通过 <Suspense>
和 Streaming SSR 推广了这一模式,但直到最近,元框架(meta-framework)才开始全面实现这一特性:Remix 自 2023 年起便已支持,而 Next.js 则在同年首次宣布对所谓的部分预渲染“Partial Prerendering (PPR) ”提供实验性支持。
这可能需要单独撰写一篇文章,但以下是 2024 年更新的核心要点:
信号机制名称不同,本质依旧相同
为实现浏览器中的交互性,同时避免让开发者手动管理所有状态(例如 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 年,我们正见证新一轮技术变革,三大主流框架相继推出全新响应式模型:
此外,一项为 JavaScript 引入标准 Signal 实现的提案已于 2024 年进入第一阶段。
Astro:站上同一起跑线
Astro 是一个相对较新的前端框架,近期备受关注(在最新发布的 State of JS 2024 报告中,Astro 在兴趣度、留存率和用户满意度三项指标中均位列第一)。
虽然 Astro 仍然坚守其内容驱动型网站轻量级框架的定位,但在 2024 年添加了多个关键功能,以回应部分批评:
Vite 影响力进一步提升
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 不再只属于 Nuxt
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 年是兼容性大幅提升的一年!
开发者体验持续提升
基于 Rust 的超快构建工具即将面世
用 Rust 编写新编译器和打包工具的多项工作正在进行中,并在 2024 年取得了显著进展:
迁移变得前所未有的简单
迁移代码修改工具自动化处理繁琐工作
在 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 年的研究项目:
年度重要发布
2024 年共有 11 个 重要的前端框架版本发布:
此外,还有一些重要的生态项目发布:
赞助与融资动态
2024 年,一些核心项目宣布了融资和合作消息:
特别关注
2025 年值得期待的变化
原文链接:
https://www.netlify.com/blog/2024-frameworks-year-in-review/
声明:本文由 InfoQ 翻译,未经许可禁止转载。