客戶端導航
Link
元件能在同一個 Next.js 應用中實現客戶端導航 (Client-Side Navigation) 的頁面切換。
客戶端導航意味著頁面轉換是_透過 JavaScript 執行_,這比瀏覽器預設的導航方式更快速。
以下是一個簡單的驗證方法:
- 使用瀏覽器的開發者工具將
<html>
的background
CSS 屬性改為yellow
。 - 點擊連結來回切換兩個頁面。
- 你會發現黃色背景在頁面轉換時仍然保持。
這表示瀏覽器_沒有_載入完整頁面,客戶端導航正在運作。
如果你使用 <a href="…">
而非 <Link href="…">
並執行相同操作,點擊連結時背景色會被清除,因為瀏覽器會執行完整重新載入。
程式碼分割與預取 (Code splitting and prefetching)
Next.js 會自動進行程式碼分割 (Code splitting),因此每個頁面僅載入該頁面所需的程式碼。這表示當首頁被渲染時,其他頁面的程式碼最初並不會被載入。
這確保即使你有數百個頁面,首頁仍能快速載入。
僅載入請求頁面的程式碼也意味著頁面之間是隔離的。如果某個頁面發生錯誤,應用程式的其他部分仍能正常運作。
此外,在 Next.js 的生產環境 (production) 版本中,當 Link
元件出現在瀏覽器視窗內時,Next.js 會自動在背景預取 (prefetch) 連結頁面的程式碼。當你點擊連結時,目標頁面的程式碼早已在背景載入完成,頁面轉換幾乎是瞬間完成!
總結
Next.js 透過程式碼分割、客戶端導航和生產環境中的預取 (prefetching) 功能,自動為你的應用程式提供最佳效能優化。
你只需在 pages
目錄下建立檔案作為路由,並使用內建的 Link
元件,無需任何額外的路由函式庫。
你可以在 next/link
的 API 參考文件 中了解更多關於 Link
元件的資訊,並在路由文件 中了解路由的相關知識。
注意: 如果你需要連結到 Next.js 應用程式_外部_的頁面,直接使用
<a>
標籤即可,無需使用Link
。