Reactjs Next.js-客户端导航与html中的更改

Reactjs Next.js-客户端导航与html中的更改,reactjs,next.js,server-side-rendering,client-side,Reactjs,Next.js,Server Side Rendering,Client Side,我目前正在研究,但我很难理解以下内容: 教程告诉我,单击元素不会触发服务器请求,而是执行“客户端导航”,即使用js调整页面内容: Link组件支持同一个Next.js应用程序中两个页面之间的客户端导航。客户端导航意味着页面转换使用JavaScript进行 立即提出三个问题: 对我来说,这听起来像是没有next.js等的常规路由。但事实并非如此,对吗 如果我在Chrome开发工具中禁用javascript,仍然有效。这表明js实际上没有发生转换。这与他们的说法相矛盾吗 当我右键单击页面并单击“查

我目前正在研究,但我很难理解以下内容:

教程告诉我,单击
元素不会触发服务器请求,而是执行“客户端导航”,即使用js调整页面内容:

Link组件支持同一个Next.js应用程序中两个页面之间的客户端导航。客户端导航意味着页面转换使用JavaScript进行

立即提出三个问题:

  • 对我来说,这听起来像是没有next.js等的常规路由。但事实并非如此,对吗
  • 如果我在Chrome开发工具中禁用javascript,
    仍然有效。这表明js实际上没有发生转换。这与他们的说法相矛盾吗
  • 当我右键单击页面并单击“查看源代码”(在Chrome中)时,我会在单击
    前后获得不同的HTML。(与“常规”反应行为相反)。如何将其视为“客户端导航”
在本教程中,他们进一步告诉我:

默认情况下,Next.js预呈现每个页面。这意味着Next.js提前为每个页面生成HTML,而不是由客户端JavaScript完成

这句话听起来与上面引用的另一句话相矛盾。你能帮我澄清一下吗?当我点击
时,到底发生了什么?是否加载了新的html文件?如果是这样的话,“客户端”怎么会发生这种情况。谢谢大家!

在那里

我认为您应该熟悉Next.js框架的主要概念是服务器端呈现,这基本上意味着页面的所有内容都在服务器中预处理,将已经呈现的文件发送到浏览器,从而节省应用程序客户端的资源

默认情况下,使用build命令时,所有Next.js页面都会预先呈现

Next.js还有自己的
组件,它使用下一个路由器模块在页面之间导航

默认情况下,页面中的每个
组件都会告诉Next.js预取该页面及其资源(在浏览器发出初始请求时,服务器也会呈现这些资源),并在单击该页面时“立即可用”


我认为,与普通SPA相比,主要的基本区别在于,在这些情况下,当您更改页面时,需要更长的时间,因为您将无法使用这些页面。

谢谢,这已经为我澄清了一些事情。然而,我仍然不明白的是:这样一个预取的html怎么能“立即可用”,特别是没有js?浏览器能在没有js的情况下获取html文件、缓存并根据需要立即加载它吗?尽管如此,值得一提的是,在初始请求之后,nextjs将作为“常规”SPA工作。第一个(初始)请求由服务器处理,然后前端处理路由(至少在Next.js的情况下)。