今天想要來看看在 vue 中如何連到不同頁面,以 HTML 來說,可以使用 a href 連到相應的 html 檔,但是 vue 的檔案都是以 .vue 結尾,到底怎麼連勒 qaq
於是找到這個酷東西 Vue Router
Vue router 是 Vue.js 官方提供的路由工具,讓單頁應用(SPA)能在不重新載入整個頁面的情況下,透過網址對應不同元件畫面。
Step1: 安裝套件
npm add vue-router@latest
Step2: 建立 views
因為會有多個頁面,所以原本寫到 App.vue 首頁的內容會搬到 ./src/views/Home.vue
中。另外,也會多建立一個頁面 About.vue
,專案架構會變成以下:
src/
├── assets/
├── components/
├── data/
├── router/
├── validation/
├── views/
│ ├── About.vue
│ ├── Home.vue
├── App.vue
├── main.js
└── style.css
Step3: 建立 router
在 ./src/router/index.js 中加入 router
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: About
}
]
const router = createRouter({
history: createWebHistory(),
routes
})
export default router
Step4: 修改 App.vue 和 main.js
App.vue
<template>
<div id="app">
<router-view />
</div>
</template>
main.js
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'
createApp(App).use(router).mount('#app')
Step5: 最後,在 Header.vue 中加入不同頁面
<template>
<header class="header">
<div class="header-content">
<h1 class="logo">
<router-link to="/" class="logo-link">
✦ 推甄經驗分享 ✦
</router-link>
</h1>
<nav class="nav-menu">
<router-link to="/" class="nav-link">首頁</router-link>
<router-link to="/about" class="nav-link">關於</router-link>
</nav>
<button class="add-btn" @click="handleShare">
✍ 分享經驗
</button>
</div>
</header>
</template>
小結
- 知道 Vue router 怎麼應用