You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Next.js静态路由不请求HTML页面?静态站点路由疑问

问题原因及解答

1. 开启JS时表现像SPA的原因

Next.js构建静态预渲染站点时,会自动给每个页面注入客户端路由脚本。当你点击内部<a>链接时,这个脚本会劫持点击事件,阻止浏览器默认的页面跳转行为,转而通过客户端逻辑直接加载对应页面的预渲染内容(要么是首次加载时缓存的,要么是提前预加载的),同时更新地址栏URL,自然不会向服务器发新请求,看起来就和SPA一样。

这么做是为了提升体验:避免页面刷新的白屏,跳转更流畅,还能复用已加载的公共资源(比如全局样式、通用组件代码)。

2. 禁用JS后恢复请求的原因

浏览器禁用JS时,Next.js注入的客户端路由脚本没法执行,<a>链接的原生行为就会恢复——点击后浏览器直接向服务器请求对应路径的HTML文件,这就是静态网站的正常工作方式。

3. Next.js采用两种路由方式的原因

这是Next.js的渐进式增强设计思路:

  • 开JS时,提供类SPA的流畅体验,同时保留静态预渲染的SEO优势;
  • 关JS时,降级为纯静态HTML的传统路由,确保网站在任何环境都能正常访问(比如爬虫、低配置设备、禁用JS的场景)。

这种设计兼顾了部署简单性、交互体验和兼容性,是Next.js作为全栈框架的核心特性之一。

内容的提问来源于stack exchange,提问作者Nemus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:28:19