09
Re:Nuxt 100 天練習曲
Day 9

網站的導航地圖 (Routing)

Day 9·路由系統·頁面導航

今天,我們來深入了解網站的結構與動線——路由 (Routing)。它決定了使用者在網址列輸入什麼,就能看到哪個頁面。

在 Nuxt 中,您不需要手動撰寫任何複雜的路由設定檔。它的核心魔法就是:檔案式路由

檔案就是路由

規則非常簡單:您在 pages/ 資料夾裡建立的檔案與資料夾結構,會自動變成您的網站路由。

pages/index.vue
會對應到/
pages/about.vue
會對應到/about
pages/posts/[id].vue
會對應到/posts/任何東西(動態路由)

頁面之間的連結:<NuxtLink>

要讓使用者能在這些頁面間移動,我們需要使用 Nuxt 專屬的 <NuxtLink> 元件。它不僅能建立連結,還會在使用者快要點擊時預先載入頁面資源,讓切換速度感覺特別快。

Navigation.vue
<template>
  <nav>
    <NuxtLink to="/">首頁</NuxtLink>
    <NuxtLink to="/about">關於我們</NuxtLink>
    <NuxtLink to="/posts/1">第一篇文章</NuxtLink>
  </nav>
</template>

讀取網址參數:useRoute()

對於動態路由(例如 pages/posts/[id].vue),我們最需要知道的就是「使用者到底想看哪一篇文章?」也就是網址中 [id] 的部分。

這時,我們可以使用 Nuxt 提供的工具 useRoute() 來取得當前路由的資訊。

pages/posts/[id].vue
<script setup>
// 1. 呼叫 useRoute() 來取得當前路由物件
const route = useRoute();

// 2. 從 route.params 中取得 id
//    如果網址是 /posts/hello-nuxt,那 postId 就會是 'hello-nuxt'
const postId = route.params.id;
</script>

<template>
  <article>
    <h1>文章標題</h1>
    <p>您正在閱讀的文章 ID 是:{{ postId }}</p>
  </article>
</template>

useRoute() 是連接動態路由與頁面內容的關鍵橋樑。

今日總結

今天我們掌握了 Nuxt 路由系統的三個核心:

檔案式路由:用資料夾和檔案決定網站結構。

<NuxtLink>:建立高效能的頁面連結。

useRoute():在動態頁面中,讀取網址上的參數。

學會了這些,您就擁有了打造一個結構完整、可互動網站的基礎。

檔案路徑對應網址說明
pages/index.vue/首頁
pages/about.vue/about靜態頁面
pages/posts/[id].vue/posts/123動態路由
pages/blog/[...slug].vue/blog/2023/article多層動態路由

預告:但如果有人想進入一個需要登入才能看的頁面呢?或者,如果 id 必須是數字,但使用者卻輸入了文字怎麼辦?明天,我們將學習如何建立「路由守衛 (Route Middleware)」和「路由驗證 (Validation)」來處理這些進階情境。