客户端导航 (Client-Side Navigation)
Link
组件支持在同一个 Next.js 应用中的两个页面之间进行客户端导航 (client-side navigation)。
客户端导航意味着页面转换是通过 JavaScript 实现的,比浏览器默认的导航方式更快。
以下是一个简单的验证方法:
- 使用浏览器的开发者工具将
<html>
元素的background
CSS 属性改为yellow
。 - 点击链接在两个页面之间来回切换。
- 你会看到黄色背景在页面转换过程中保持不变。
这表明浏览器 没有 加载整个页面,客户端导航正在正常工作。
如果使用 <a href="…">
而不是 <Link href="…">
进行同样的操作,点击链接时背景色会被清除,因为浏览器会执行完整的页面刷新。
代码分割与预加载 (Code splitting and prefetching)
Next.js 会自动进行代码分割,因此每个页面仅加载该页面所需的内容。这意味着在渲染首页时,其他页面的代码最初不会被加载。
这确保了即使你有数百个页面,首页也能快速加载。
仅加载所请求页面的代码还意味着各个页面相互隔离。如果某个页面出现错误,应用程序的其余部分仍能正常工作。
此外,在 Next.js 的生产环境构建中,当 Link
组件出现在浏览器视口时,Next.js 会自动在后台预加载 (prefetch) 链接页面的代码。当你点击链接时,目标页面的代码已经在后台加载完成,页面转换几乎是瞬间完成的!
总结
Next.js 通过代码分割、客户端导航和(生产环境中的)预加载自动优化你的应用以获得最佳性能。
你可以在 pages
目录下创建路由文件,并使用内置的 Link
组件,无需额外的路由库。
你可以在 next/link
API 参考文档 中了解更多关于 Link
组件的信息,并在 路由文档 中了解路由的更多内容。
注意: 如果需要链接到 Next.js 应用之外的 外部 页面,直接使用不带
Link
的<a>
标签即可。