跳至内容

页面间导航

客户端导航

Link 组件支持在同一个 Next.js 应用中的两个页面之间进行 **客户端导航**。

客户端导航意味着页面转换是 *使用 JavaScript* 完成的,这比浏览器默认的导航更快。

以下是如何验证它的一种简单方法

  • 使用浏览器的开发者工具将 <html>background CSS 属性更改为 yellow
  • 点击链接在两个页面之间来回切换。
  • 你会发现黄色背景在页面转换之间仍然存在。

这表明浏览器 *没有* 加载完整页面,并且客户端导航正在工作。

如果你使用了 <a href="…"> 而不是 <Link href="…"> 并执行此操作,则背景颜色会在点击链接时被清除,因为浏览器会进行完全刷新。

代码分割和预取

Next.js 会自动进行代码分割,因此每个页面只加载该页面所需的代码。这意味着当主页渲染时,其他页面的代码不会被立即提供。

这确保了即使你有数百个页面,主页也能快速加载。

只加载你请求的页面的代码也意味着页面变得隔离。如果某个页面抛出错误,应用程序的其余部分仍然可以工作。

此外,在 Next.js 的生产版本中,每当 Link 组件出现在浏览器视口中时,Next.js 就会自动在后台 **预取** 链接页面的代码。当你点击链接时,目标页面的代码已经加载到后台,页面转换将几乎是即时的!

总结

Next.js 通过代码分割、客户端导航和预取(在生产环境中)自动优化你的应用程序以获得最佳性能。

你可以在 pages 目录下创建路由文件,并使用内置的 Link 组件。不需要路由库。

你可以在 next/link 的 API 参考 中了解更多关于 Link 组件的信息,以及在 路由文档 中了解一般路由信息。

**注意:**如果你需要链接到 Next.js 应用外部的 *外部* 页面,只需使用一个 <a> 标签,无需 Link

**快速复习**:用户打开浏览器并导航到 your-blog.com/posts/first-post。此页面最初加载了哪些 JavaScript?