1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| <template> <nav> <router-link to="/">首页</router-link> <router-link to="/about">关于</router-link> <router-link to="/dynamic">动态路由</router-link> </nav> <router-view /> </template>
<script setup> import { useRouter, useRoute } from 'vue-router'
const router = useRouter() const route = useRoute()
const goToAbout = () => { router.push('/about') }
// 动态添加路由 const addDynamicRoute = () => { router.addRoute({ path: '/dynamic', name: 'Dynamic', component: () => import('../views/Dynamic.vue') }) // 跳转到新添加的路由 router.push('/dynamic') }
// 获取当前路由信息 console.log('当前路由:', route.path) console.log('路由参数:', route.params) console.log('查询参数:', route.query)
// 路由导航方法 const navigate = { // 编程式导航 goToHome: () => router.push('/'), goToAbout: () => router.push('/about'), // 带参数导航 goToUser: (id) => router.push({ name: 'User', params: { id } }), // 带查询参数 goToSearch: (keyword) => router.push({ path: '/search', query: { q: keyword } }), // 替换当前路由(不记录历史) replaceHome: () => router.replace('/'), // 前进后退 goBack: () => router.go(-1), goForward: () => router.go(1), // 检查路由是否存在 hasRoute: (name) => router.hasRoute(name), // 获取路由列表 getRoutes: () => router.getRoutes() }
// 动态路由操作 const dynamicRoutes = { // 添加嵌套路由 addNestedRoute: () => { router.addRoute('Home', { path: 'settings', component: () => import('../views/Settings.vue') }) }, // 删除路由 removeRoute: (name) => { router.removeRoute(name) }, // 添加路由守卫 addGuard: () => { router.beforeEach((to, from, next) => { console.log(`路由守卫: ${from.path} -> ${to.path}`) next() }) } } </script>
|