Web开发模式演进与对比

全面Web开发架构模式对比表

省流:

1
静态 → 服务端动态 → 客户端动态 → 混合渲染 → 构建时渲染

传统静态MPA动态服务端MPA客户端SPA现代同构应用静态生成站点微前端架构

简易版表格

模式名称 架构 代码模式 开发范式 渲染方式 核心特征 适用场景
传统静态MPA MPA 独立HTML文件 无复用结构 静态直接服务 每个页面独立,维护成本高 简单展示页、个人网站
动态服务端MPA MPA 模板组合页面 服务端模板(SST) SSR 服务器拼装,有一定复用 传统企业官网、早期电商
客户端SPA SPA 组件构成应用 组件化开发(CBD) CSR 单HTML入口,前端路由,体验流畅 后台管理、工具类Web应用
现代同构应用 混合 组件+页面路由 CBD + 服务端能力 SSR + CSR混合 首屏服务端渲染,后续客户端交互 电商、社交平台、需要SEO的复杂应用
静态生成站点 混合 组件/模板构建 内容驱动开发 构建时渲染 预先生成HTML,性能极致 博客、文档、营销页面
微前端架构 分布式 多个独立子应用 独立团队协作 多种渲染策略混合 大型应用拆解,独立开发部署 企业级SaaS平台、大型系统

具体技术栈对应关系

模式 代表技术 典型项目
传统静态MPA 纯HTML/CSS/JS 个人作品集、简单宣传页
动态服务端MPA PHP(Laravel)、Python(Django)、Java(Spring) 传统企业官网、小型电商
客户端SPA Vue/React/Angular + 路由库 后台管理系统、SAAS工具
现代同构应用 Next.js(React)、Nuxt.js(Vue)、Remix 电商平台、社交应用、内容社区
静态生成站点 Hugo、Jekyll、VuePress、Astro 技术博客、产品文档、营销网站
微前端架构 Single SPA、Module Federation、qiankun 大型企业平台、银行系统、复杂SAAS

复杂版:该表格从许多角度详细区分了Web开发的不同模式

维度 1. 原始MPA 2. 服务端MPA 3. SPA (CSR) 4. SSR框架 5. SSG/静态生成 6. 微前端 7. JAMstack 8. 岛屿架构 9. 可恢复架构 10. 边缘渲染 11. 渐进增强(HTMX) 12. Web Components
核心架构 多页面应用 多页面应用 单页面应用 同构应用 静态站点 分布式应用 JavaScript+APIs+Markup 静态HTML+交互岛屿 可序列化状态恢复 边缘计算 渐进增强 原生Web组件
渲染位置 无渲染(静态) 服务端 客户端 服务端+客户端 构建时 客户端/服务端混合 构建时+客户端 服务端+按需客户端 服务端序列化 边缘节点 服务端为主 客户端
代码组织 每个页面独立HTML 模板继承/include 组件化 组件化+页面路由 组件化+模板 独立子应用 组件化+API调用 静态模板+岛屿组件 组件化(特殊) 组件化+边缘函数 传统HTML+AJAX 自定义元素
路由方式 服务端路由(整页刷新) 服务端路由 前端路由(hash/history) 混合路由 静态文件路由 前端路由+集成 静态路由+客户端路由 静态路由+客户端交互 前端路由(按需) 边缘路由 服务端路由+局部更新 前端/服务端均可
状态管理 无/简单全局变量 服务器Session Vuex/Pinia/Redux 服务端状态传递+客户端状态 无/静态数据 独立状态+共享状态 客户端状态+API状态 组件状态 序列化状态 边缘状态 服务端状态 组件内部状态
数据获取 无/静态内容 服务器数据库查询 AJAX/Fetch API getServerSideProps等 构建时获取 独立数据源 API调用(GraphQL/REST) 构建时/运行时API 序列化数据传递 边缘函数调用 服务器返回HTML片段 AJAX/服务器推送
构建工具 无/简单编译 Webpack/Vite Next.js/Nuxt.js内置 Hugo/Jekyll/Gatsby Webpack模块联邦 Vite/Webpack+部署平台 Astro/Vite Qwik CLI 边缘平台工具 无/简单构建 无/Vite/Webpack
部署方式 静态文件托管 传统服务器 静态托管+API服务器 Node.js服务器/Serverless 静态托管/CDN 独立部署+集成 静态托管+Serverless函数 静态托管 静态托管+边缘 边缘平台 传统服务器 静态/服务器均可
性能特点 首屏最快 首屏快,但TTFB依赖服务器 首屏慢,后续快 首屏快,水合后有开销 最快,纯静态 独立加载,可能冗余 静态快,API调用有延迟 极快,JS按需加载 即时交互,极低JS 全球低延迟 快速初始,渐进增强 原生性能好
SEO支持 完美 完美 差(需额外处理) 优秀 完美 各子应用独立处理 优秀(预渲染) 完美 优秀 优秀(SSR) 完美 一般(需配合SSR)
开发体验 简单但重复 传统,耦合度高 现代,热更新好 优秀,混合体验 简单但构建慢 复杂但独立 优秀,前后端解耦 极佳,关注点分离 独特,学习曲线陡 新兴,工具链发展中 简单直观 原生但生态小
维护成本 高(重复代码) 中高(服务器维护) 中(依赖管理) 中(服务器成本) 低(纯静态) 高(集成复杂度) 低(托管服务) 低(简单清晰) 中(新颖概念) 中(平台依赖) 低(技术简单) 中(浏览器兼容)
学习曲线 极低 中(服务器语言) 中高(框架概念) 高(服务端+客户端) 高(架构设计) 高(新范式) 中高
团队协作 适合小团队 前后端紧密协作 前后端分离 全栈团队 内容团队友好 多团队独立开发 前后端分离 设计+开发协作 需要新思维 DevOps要求高 传统团队友好 跨框架协作
适用规模 极小项目 中小型 中小到大型 中小到大型 中小型(内容型) 超大型(企业级) 中小型 内容为主网站 性能敏感应用 全球分布式应用 传统网站增强 跨框架组件
典型用例 简单展示页 传统企业网站 Web应用/后台管理 电商/社交平台 博客/文档站 大型SaaS平台 营销网站/博客 内容网站少量交互 电商/门户 全球应用/API网关 传统网站现代化 UI组件库

详细释义

核心架构类

MPA - Multi-Page Application

中文:多页面应用
详细解释

  • 传统的Web应用架构,每个页面都是独立的HTML文件
  • 用户每次导航都会从服务器加载新的完整页面
  • 页面跳转时浏览器会完全刷新
  • 示例:传统的PHP网站、Java JSP网站、早期企业官网

特点

优点:

  • SEO友好(每个页面都有独立URL和完整内容)
  • 首屏加载快(服务器直接返回HTML)
  • 技术成熟,开发简单

缺点:

  • 页面切换慢(需要重新加载整个页面)
  • 用户体验差(有白屏等待时间)
  • 代码重复率高(公共部分每个页面都要写)

SPA - Single-Page Application

中文:单页面应用
详细解释

  • 现代Web应用架构,整个应用只有一个HTML页面
  • 通过JavaScript动态更新内容,无需重新加载页面
  • 使用前端路由(如Vue Router、React Router)管理不同视图
  • 示例:Gmail、Google Docs、现代后台管理系统

特点

优点:

  • 用户体验好(无刷新页面切换)
  • 类似原生应用的流畅感
  • 前后端完全分离

缺点:

  • SEO困难(初始HTML内容为空)
  • 首屏加载慢(需要先下载所有JS)
  • 对浏览器性能要求较高

CSR - Client-Side Rendering

中文:客户端渲染
详细解释

  • 在用户的浏览器中执行JavaScript来生成和渲染页面内容
  • 服务器只提供初始的空HTML骨架和JavaScript文件
  • 是SPA的主要渲染方式
  • 与SSR相对

技术流程

  1. 浏览器请求HTML(空壳)

  2. 下载并执行JavaScript

  3. JavaScript请求数据(API)

  4. 用数据生成DOM并渲染

SSR - Server-Side Rendering

中文:服务器端渲染
详细解释

  • 在服务器上生成完整的HTML页面,然后发送给浏览器
  • 浏览器接收到的是已经渲染好的内容
  • 传统方式:PHP、JSP;现代方式:Next.js、Nuxt.js

分类

  • 传统SSR:PHP的include、JSP标签等
  • 现代SSR:Node.js运行React/Vue代码生成HTML

优点

  1. SEO友好:搜索引擎直接看到完整内容
  2. 首屏快:用户立即看到内容,无需等待JS执行
  3. 低端设备友好:不依赖客户端JavaScript性能

SSG - Static Site Generation

中文:静态站点生成
详细解释

  • 在构建时(build time)预先生成所有HTML页面
  • 生成的纯静态文件部署到CDN或服务器
  • 示例:Hugo、Jekyll、VuePress、Gatsby

适用场景

  • 博客、文档网站、产品官网
  • 内容不频繁变化的网站
  • 对性能和安全要求极高的网站

技术特点

构建时:源代码 → 构建工具 → 静态HTML/CSS/JS文件
运行时:直接提供静态文件,无需服务器渲染

ISR - Incremental Static Regeneration

中文:增量静态再生
详细解释

  • SSG的增强版本,支持增量更新
  • 部分页面静态生成,部分页面动态生成或按需生成
  • 典型实现:Next.js的getStaticProps + revalidate

工作流程

  1. 首次访问:生成静态页面并缓存
  2. 后续访问:直接提供缓存的静态页面
  3. 定时更新:到达指定时间后重新生成
  4. 按需更新:内容变化时触发重新生成
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

You Found Me.

支付宝
微信