Next.js应用是否属于SPA(单页应用)?
Next.js应用是否属于单页应用(SPA)?
不能简单把Next.js应用直接归类为单页应用,它是支持多种渲染模式的混合框架,最终应用是否符合SPA特性完全取决于开发者的配置和使用方式。
首先先明确SPA的核心判定逻辑:
普通React开发的SPA被归为单页应用,核心原因不是只有一个index.html文件,而是所有页面切换都在客户端完成,不需要从服务端请求新的HTML文档,仅靠JS动态替换页面内容,整个使用过程不会触发整页刷新。
Next.js的不同使用场景对应不同的应用形态:
- 如果你开启Next.js的
output: export配置导出纯静态产物,并且全程使用Next.js自带的<Link>组件做客户端路由跳转,那此时的应用本质就是SPA:即使构建过程生成了多个HTML文件,页面跳转时也不会重新加载整页HTML,只会复用现有上下文替换DOM内容,和普通React SPA的交互逻辑完全一致。 - 如果你使用了Next.js的服务端渲染(SSR)、增量静态再生成(ISR)或是App Router下的服务端组件,此时应用属于SPA和多页应用(MPA)的混合形态:用户通过客户端路由跳转时走SPA的无刷新逻辑,首次访问页面、强制刷新或是直接输入URL访问时,会从服务端拉取对应页面的完整HTML,符合MPA的特征。
- 如果你完全禁用Next.js的客户端路由,全部用原生a标签做页面跳转,那产出的就是纯MPA,和传统服务端渲染框架开发的站点没有区别。
总结来说,Next.js本身没有固定的SPA/MPA属性,开发者可以根据需求灵活调整出完全符合SPA、完全符合MPA或是两者混合的应用形态。
内容的提问来源于stack exchange,提问作者Sourav Das
相关产品推荐
相关产品推荐

