如何解决Next.js-客户端导航与html中的更改
我目前正在研究next.js tutorial,但正在努力了解以下内容:
该教程告诉我here,单击<Link>
元素不会触发服务器请求,而是执行“客户端导航”,即使用js调整页面内容:
链接组件可在同一Next.js应用程序中的两个页面之间进行客户端导航。客户端导航意味着使用JavaScript进行页面转换
三个问题马上出现:
- 这听起来像是常规的SPA反应路由,而没有next.js等。但这不是吧?
- 如果我在Chrome开发者工具中禁用了javascript,
<Link>
仍然可以使用。这表明js实际上并没有发生过渡。这与他们的说法矛盾吗? - 当我右键单击页面并单击“查看源代码”(在Chrome中)时,在单击
<Link>
前后,我得到了不同的HTML。 (与“常规”反应行为相反)。如何将其视为“客户端导航”?
在本教程中,他们告诉我here:
默认情况下,Next.js预渲染每个页面。这意味着Next.js会提前为每个页面生成HTML,而不是全部由客户端JavaScript完成
此声明听起来与上面引用的另一个矛盾。您能帮我澄清一下吗?当我点击<Link>
时,到底发生了什么?是否加载了新的html文件?如果是这样,这怎么会在“客户端”发生。谢谢!
解决方法
那里!
我认为您应该熟悉Next.js框架的主要概念是 Server Side Rendering (服务器端渲染),这基本上意味着页面的所有内容都在服务器中进行了预处理,并且已经发布浏览器中已经呈现的文件,从而节省了应用程序客户端的资源。
默认情况下,当您使用 build 命令时,所有的Next.js页面都是预先渲染的。
Next.js还具有自己的<Link />
组件,该组件使用 next-router 模块在页面之间导航。
默认情况下,页面中的每个<Link />
组件都会告诉Next.js预获取该页面及其资源(服务器也会根据来自浏览器的初始请求将其呈现),并“立即单击”。
我认为,与常规SPA相比,主要的基本区别在于,在这些页面中,当您更改页面时,将花费更长的时间,因为它们将不再可用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。