#Newsletter #CSS #性能 #SPA
It's time for modern CSS to kill the SPA

AI 摘要:本文章批判了将 SPA(单页应用,Single Page Application)作为优先方案的潮流,指出随着现代 CSS 和浏览器(如 View Transitions API、Speculation Rules 等)的进步,实现流畅、原生的页面交互已不再需要复杂的 JS 框架和大量前端代码。作者呼吁开发者回归标准的 HTML + CSS + 浏览器原生能力,构建更快速、可维护、SEO 友好的网站,并强调 SPA 带来的复杂性、性能损耗、可访问性问题,以及与浏览器发展脱节的弊端。

1. “类应用”迷思与 SPA 的错误假设
• 许多项目由于“要像 app 一样流畅”的陈旧要求选择了 SPA 架构,而忽略了是否真的需要。
• 选择 SPA 并非出于真正的技术需求,而是为交互流畅度妥协了架构简洁性。
• 现在的假设已过时,SPA 不再是唯一可实现流畅体验的方法。

2. SPA 的“伪流畅”与性能危害
• SPA 的“无刷新感”常常是假象,实际表现为加载动画、滚动错乱、路由行为不一致等问题。
• 大量 JavaScript 的引入导致性能下降,SEO 变得复杂,体验反而变差。
• 现代 SPA 阈值带来的技术负担,不成比例的为“流畅度”买单。

3. 现代 Web 平台演进(CSS 与浏览器原生特性)
• 浏览器原生已支持声明式页面过渡(View Transitions API),无需 JS 也能实现淡入淡出动画等高级体验。
• 结合 Speculation Rules(预测性预加载),可实现点击即开的导航体验,无需 JS 路由。
• 原生 MPA(多页面应用,Multi-page Application)方案能够通过 CSS 动画实现元素过渡、状态保存、URL 正确性等。
• 示例代码简明说明如何用 CSS 实现页面转场与共享元素动画。

4. 浏览器赋能与简单架构的优势
• 现代浏览器提供诸如 Back/Forward Cache(前进后退缓存)等特性,只要结构易读、无 JS 路由劫持即可天然获得极佳体验。
• 浏览器愿意协助性能优化,但前提是开发者不要人为增加复杂度。

5. 性能现实对比:SPA vs 现代 MPA
• 真实 SPA(如 Next.js 等)JS 体积大,加载慢,SEO 和导航表现不稳定。
• MPA + View Transitions + Speculation Rules 几乎无需 JS,加载极快,自然支持 SEO 和历史管理。
• 原生方法不仅替代 SPA 行为,而且性能和可维护性更佳。

6. 反思:“网站不是 APP”
• 普通网站无需 SPA 的状态管理、复杂路由、大量组件或 hydration。
• 使用过度的 JS 反而增加了网站开发、运维成本和用户负担。
• 理性选择开发手段,应“用网站的方式造网站”,拥抱标准技术栈。

7. 展望与建议:用现代 web 技术构建网站
• 原生 declarative transition(声明式过渡)、预渲染、降级兼容性、易维护架构等已足以满足绝大多数场景。
• SPA 是旧时代局限下的策略,如今实属多余。
• 建议开发者用现代服务端渲染和单纯 HTML + CSS 构建主站,只在必要时合理由加 JS 增强。


author Jono Alderson It's time for modern CSS to kill the SPA
 
 
Back to Top