火花语音盒(崩铁火花
25.0MB · 2026-03-26
网站是有许多单页面组成,页面并非孤立,而是可以相互跳转。以下是官网给的定义: Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。它的核心价值在于:在不刷新页面的情况下,根据 URL 的变化动态渲染不同的组件,实现流畅的页面切换体验。
假设网站有四个页面,主页,a、b、c,网站可以从主页分别跳转到a、b、c是三个页面。也可跳回主页。这些跳转信息,称作路由信息,管理路由信息完成跳转称作路由器。路由四大要素:
const routes = [
{ path: '/fish', component: Fish },
{ path: '/cat', component: Cat },
{ path: '/bird', component: Bird } // 动态路由
]
const router = createRouter(
{
history: createWebHistory(),
routes: routes
}
)
路由信息routes,注意router与routes区别。routes包含path与component。
挂载路由器,要在创建vue实例后,挂载路由。vue实例是在main.ts中创建。
const app = createApp(App)
app.use(router)
app.mount('#app')
首先打开页面,框内为空。分别点击按钮,跳转到响应页面,内容出现在边框内,注意url地址变化。
import { createApp } from 'vue'
import App from './App.vue'
import router from '@/router/index'
const app = createApp(App)
app.use(router)
app.mount('#app')
import { createRouter,createWebHistory } from "vue-router";
import Fish from "@/view/Fish.vue";
import Cat from "@/view/Cat.vue";
import Bird from "@/view/Bird.vue";
console.log(createRouter);
const routes = [
{ path: '/fish', component: Fish },
{ path: '/cat', component: Cat },
{ path: '/bird', component: Bird } // 动态路由
]
const router = createRouter(
{
history: createWebHistory(),
routes: routes
}
)
export default router;
<template>
<div class="app">
<router-link to="/fish">跳转到鱼</router-link>
<router-link to="/cat">跳转到猫</router-link>
<router-link to="/bird">跳转到鸟</router-link>
<div class="content">
<router-view></router-view>
</div>
</div>
</template>
<script setup lang="ts">
</script>
Fish
<template>
<div>
<h1>会游泳的鲫鱼</h1>
</div>
</template>
<script setup lang="ts">
</script>
Cat
<template>
<div>
<h1>爱吃老鼠的猫</h1>
</div>
</template>
<script setup lang="ts">
</script>
Bird
<template>
<div>
<h1>翱翔天空的小鸟</h1>
</div>
</template>
<script setup lang="ts">
</script>
路由的工作模式有两种,在创建路由时,必须给定模式 -history -hash history是传统模式,优点是URL更加美观,更接近传统网站URL。缺点是后期项目上线,后台服务器需配合处理路径问题,否则报404错误。一般用history较多,如b站。 hash兼容性更好,不需要服务器后台处理路径问题。缺点是url带有#,不美观,且SEO优化方面差,后端项目常用。 以下是hash实例,与history不同之处在创建路由时,用createWebHashHistory 函数指定hash模式: router/index.ts代码
import { createRouter,createWebHashHistory } from "vue-router";
import Fish from "@/view/Fish.vue";
import Cat from "@/view/Cat.vue";
import Bird from "@/view/Bird.vue";
console.log(createRouter);
const routes = [
{ path: '/fish', component: Fish },
{ path: '/cat', component: Cat },
{ path: '/bird', component: Bird } // 动态路由
]
const router = createRouter(
{
history: createWebHashHistory(),
routes: routes
}
)
export default router;
运行效果:
注意路径带有#
router-link有三种用法,以跳转为例Fish,重新配置Fish组件路由信息,给Fish路由命名为yu。 如下:{ name:'yu',path: '/fish', component: Fish }。 router-link有三种方式可以跳转到Fish组件
<router-link :to="{name:'yu'}">跳转到鱼</router-link>
<router-link :to="{path:'fish'}"">跳转到鱼</router-link>
<router-link :to="/fish">跳转到鱼</router-link>
三种跳转方式各有利弊,常用第二种方式,便于路由传参。