用項目詳細講講vue3路由
Vue Router 是 Vue.js 官方的路由管理器,它用于構建單頁面應用(SPA),允許我們在不同的頁面間進行導航,而無需刷新整個頁面。

路由配置文件代碼如下:
import {createRouter,createWebHistory} from 'vue-router' import Home from '@/pages/Home.vue' import News from '@/pages/News.vue' import About from '@/pages/About.vue' const router = createRouter({ history:createWebHistory(), routes:[ { path:'/home', component:Home }, { path:'/about', component:About } ] }) export default router
import router from './router/index' app.use(router) app.mount('#app')
<template> <div class="app"> <h2 class="title">Vue路由測試</h2> <!-- 導航區 --> <div class="navigate"> <RouterLink to="/home" active-class="active">首頁</RouterLink> <RouterLink to="/news" active-class="active">新聞</RouterLink> <RouterLink to="/about" active-class="active">關于</RouterLink> </div> <!-- 展示區 --> <div class="main-content"> <RouterView></RouterView> </div> </div> </template> <script lang="ts" setup name="App"> import {RouterLink,RouterView} from 'vue-router' </script>
路由組件通常存放在
pages或views文件夾,一般組件通常存放在components文件夾。通過點擊導航,視覺效果上“消失” 了的路由組件,默認是被卸載掉的,需要的時候再去掛載
優點:
URL更加美觀,不帶有#,更接近傳統的網站URL。缺點:后期項目上線,需要服務端配合處理路徑問題,否則刷新會有
404const router = createRouter({ history:createWebHistory(), //history模式 /******/ })
缺點:URL帶有#不太美觀,且在SEO
const router = createRouter({ history:createWebHashHistory(), //hash模式 /******/ })
<!-- 第一種:to的字符串寫法 --> <router-link active-class="active" to="/home">主頁</router-link> <!-- 第二種:to的對象寫法 --> <router-link active-class="active" :to="{path:'/home'}">Home</router-link>
作用:可以簡化路由跳轉及傳參。
routes:[ { name:'zhuye', path:'/home', component:Home }, { name:'xinwen', path:'/news', component:News, }, { name:'guanyu', path:'/about', component:About } ]
<!--簡化前:需要寫完整的路徑(to的字符串寫法) --> <router-link to="/news/detail">跳轉</router-link> <!--簡化后:直接通過名字跳轉(to的對象寫法配合name屬性) --> <router-link :to="{name:'guanyu'}">跳轉</router-link>
-
編寫
News的子路由:Detail.vue -
配置路由規則,使用
children
const router = createRouter({ history:createWebHistory(), routes:[ { name:'zhuye', path:'/home', component:Home }, { name:'xinwen', path:'/news', component:News, children:[ { name:'xiang', path:'detail', component:Detail } ] }, { name:'guanyu', path:'/about', component:About } ] }) export default router
3.跳轉路由(記得要加完整路徑):
<router-link to="/news/detail">xxxx</router-link> <!-- 或 --> <router-link :to="{path:'/news/detail'}">xxxx</router-link>
<template> <div class="news"> <nav class="news-list"> <RouterLink v-for="news in newsList" :key="news.id" :to="{path:'/news/detail'}"> {{news.name}} </RouterLink> </nav> <div class="news-detail"> <RouterView/> </div> </div> </template>

浙公網安備 33010602011771號