iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Vue.js

Vue.js 新手入門之路系列 第 28

Vue.js 新手入門之路 - router

  • 分享至 

  • xImage
  •  

今天要學習 router 路由,簡單來說就是我們的網站中透過網址的不同結構,切換並顯示網站內不同的頁面內容
當 user 透過瀏覽器訪問某個特定的網址時,網站會根據這個網址對應的路由設定,回應對應的頁面資料,使的我們的網站元素更豐富

有鑑於之前的專案已經太多元件了,我決定再開一個新的目錄
開啟 Terminal
https://ithelp.ithome.com.tw/upload/images/20250917/20178296nBpSSCBa2O.png

先安裝 router 相關套件
https://ithelp.ithome.com.tw/upload/images/20250917/20178296E4YSXyZv5F.png

開一個新的專案,可參考第二篇

在 main.js 加入 router 並使用在 createApp

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'

createApp(App).use(router).mount('#app')

https://ithelp.ithome.com.tw/upload/images/20250917/20178296mi89PP1Owi.png

建立新檔案: src/router/index.js

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
const About = () => import('../views/About.vue')

const routes = [
  { path: '/', name: 'home', component: Home },
  { path: '/about', name: 'about', component: About },
]

export default createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes,
})

接著建立新檔案: src/views/Home.vue & src/views/About.vue

<template><h2>Home</h2></template>
<template><h2>About</h2></template>

最後 App.vue

<template>
  <h1>Hello App!</h1>
  <p><strong>Current route path:</strong> {{ $route.fullPath }}</p>
  <nav>
    <RouterLink to="/">Go to Home</RouterLink>
    <RouterLink to="/about">Go to About</RouterLink>
  </nav>
  <main><RouterView /></main>
</template>

<style scoped>
  nav{
    display: flex;
    flex-direction: column;
    gap: 3px;
  }
</style>

就可以 npm run dev 起來看結果了
預設會在根路徑
https://ithelp.ithome.com.tw/upload/images/20250917/201782961RTDIn8ZC3.png
Go to About 就可以切換到 /about 路由,再次點一次 Go to Home 就可以回到根路由
https://ithelp.ithome.com.tw/upload/images/20250917/20178296rbzY2eKN8j.png


上一篇
Vue.js 新手入門之路 - inject(二)
下一篇
Vue.js 新手入門之路 - router(二)
系列文
Vue.js 新手入門之路30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言