vue3中vue-router安装配置使用全过程

 更新时间:2025年09月24日 10:11:41   作者:keep_python  
VueRouter是Vue.js官方的路由管理器,用于实现单页面应用(SPA)的路由功能,这篇文章主要介绍了vue3中vue-router安装配置使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

总结:

  • 哪里有跳转,哪里有路由占位 <RouterView/>
  • js跳转:router对象 : const router = useRouter()
  • js收参:route对象 : const route = useRoute()
  • 页面跳转:<router-link :to="{ name: 'home', params: { id: 123 } }">主页</router-link>
  • 注意: 尽量就使用 路由名 name 跳转即可!
    1. 传递params参数时,若使用to的对象写法,必须使用name配置项,不能用path。
    2. 传递query参数时,若使用to的对象写法,path可以使用name配置项,也可以使用path。

1. 路由器 router 安装

npm install vue-router

2、路由器 router 配置

2.1 在 router 文件夹下创建 index.ts 文件,配置路由

/**
 * 创建路由器并且暴露出去!
 * vue3中必须指定工作模式!
 *
 *  */
import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router';

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    redirect: '/home',
  },

  {
    path: '/home',
    name: 'home',
    component: () => import('@/views/demo_route/home.vue'),
  },
  {
    path: '/about',
    name: 'about',
    component: () => import('@/views/demo_route/about.vue'),
  },
  {
    path: '/news',
    name: 'news',
    component: () => import('@/views/demo_route/news.vue'),
  },
];
// 引入
const router = createRouter({
  // 路由器的工作模式
  history: createWebHistory(),
  routes,
});
// 暴露出去
export default router;

2.2 路由器 router 引入

在 main.ts 文件中引入路由:

import router from './router';
import { createApp } from 'vue';
import App from './App.vue';
const app = createApp(App);
app.use(router);
app.mount('#app');

3、路由的简单测试

<!--
 * @author: keep_di
 * @desc: 
* 路由中有设计好的一个激活样式:active-class
-->
<script setup lang="ts">
  // RouterView
  import { RouterView, RouterLink } from 'vue-router';
</script>
<template>
  <div class="app">
    <h2 class="title">路由测试学习</h2>
    <hr />
    <ul class="nav">
      <RouterLink to="/home" active-class="nav_active">首页</RouterLink>
      <RouterLink to="/about" active-class="nav_active">关于</RouterLink>
      <RouterLink to="/news" active-class="nav_active">新闻</RouterLink>
    </ul>
    <hr />
    <router-view class="content"></router-view>
  </div>
</template>

如何使用路由和路由器

1、路由跳转 和 传参

1.1 组件标签router-link 中

  • to 的字符串写法
<!-- 第一种:to的字符串写法 -->
<router-link to="/home">主页</router-link>
  • to 的对象写法 ★
<!-- 第二种:to的name对象写法 -->
<router-link :to="{ name: 'home', params: { id: 123 } }">主页</router-link>

1.2 js中使用

前提:拿到路由器和路由对象:

  • 跳转: router对象!
  • 收参: route对象!
import { useRoute, useRouter } from 'vue-router';
//导入能返回路由器和路由对象的方法!
const route = useRoute();
const router = useRouter();

路由跳转 : 参数:params (类似post )

router.push({ name: 'user', params: { user: '123', role: 'admin' } });

路由跳转 :参数: query (类似get )

router.push({ name: 'user', query: { user: '123', role: 'admin' } });

路由跳转 :替换当前路径

router.replace({ path: '/home' });

路由跳转 :回退和前进标签

router.go(-1); //回退
router.go(0); //刷新
router.go(1); //前进

2、路由收参:

<script setup lang="ts">
import { toRefs } from "vue";
import { useRoute } from "vue-router";

// 使用 useRoute 获取参数
const route = useRoute();
let {query} = route //获取query参数
let {params} = route   //获取params参数
</script>

<template>
   <div>
     {{params.name}}  {{params.age}}
     {{query.a}}  {{query.b}}
   </div>
</template>

3、路径传参和收参

配置路由时,设置路径参数:

const routes = [
  {
    path: '/user/:id', // 定义路径参数 id
    component: UserProfile,
  },
];

页面vue中接收路径参数:

<script setup>
import { useRoute } from 'vue-router'
// 获取路由实例
const route = useRoute()
// 直接获取路径参数(默认是字符串类型)
const userId = route.params.id
// 如果需要数字类型,可手动转换
const userIdNum = Number(route.params.id)
</script>

4、监听参数变化:

当从 /user/1 跳转到 /user/2 时,组件不会重新创建 , 需监听参数变化以执行相应逻辑:

实现方案:

<script setup>
import { useRoute, watch } from 'vue-router'

const route = useRoute()

// 监听 params 整体变化
watch(
  () => route.params,
  (newParams, oldParams) => {
    console.log('参数变化:', newParams.id)
    // 执行参数变化后的逻辑(如重新请求数据)
  },
  { immediate: true } // 初始加载时立即执行一次
)

// 只监听某个具体参数(如 id)
watch(
  () => route.params.id,
  (newId, oldId) => {
    console.log('ID变化:', newId)
  }
)
</script>

5、注意事项:

  • 路径参数始终是字符串类型,如需数字 / 布尔值等类型需手动转换(如 Number())。
  • 嵌套路由中,route.params 会包含所有层级的参数(如 /user/:id/post/:postId 可同时获取 id 和 postId)。
  • 若参数可能不存在,需做容错处理(如 route.params.id || ‘默认值’)。

附:vue3配置vue-router报错解决方法

问题一:import { createRouter, createWebHashHistory} from 'vue-router'; 爆红

解决方法:引入报错使用命令 pnpm install vue-router@4.2.1 -D 

安装vue-router4.2.1 版本

问题二:routes爆红

找了很久发现是路由的组件component写出了comment,我无语了 

如果还不能解决可以使用RouteRecordraw定义路由配置

import { RouteRecordRaw } from 'vue-router';
export const constantRoute: Array<RouteRecordRaw> = [
    {
        path: '/login',
        component: () => import('@/views/login/index.vue'),
        name: 'login'
    },
    {
        path: '/',
        component: () => import('@/views/home/index.vue'),
        name: 'layout'
    },
    {
        path: '/404',
        component: () => import('@/views/404/index.vue'),
        name: '404'
    },
    // 任意路由
    {
        path: '/pathMatch(.*)*',
        redirect: '/404',
        name: 'Any'
    }
]

总结 

到此这篇关于vue3中vue-router安装配置使用的文章就介绍到这了,更多相关vue3 vue-router安装配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue如何解决echarts5.0以上版本插入地图的问题

    vue如何解决echarts5.0以上版本插入地图的问题

    这篇文章主要介绍了vue如何解决echarts5.0以上版本插入地图的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Vue替代vuex的存储库Pinia详细介绍

    Vue替代vuex的存储库Pinia详细介绍

    这篇文章主要介绍了Vue替代vuex的存储库Pinia,听说pinia与vue3更配,便开启了vue3的学习之路,pinia 和 vuex 具有相同的功效, 是 Vue 的存储库,它允许您跨组件/页面共享状态
    2022-09-09
  • Vue实现浏览器打印功能的代码

    Vue实现浏览器打印功能的代码

    这篇文章主要介绍了Vue实现浏览器打印功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Vue基于环境变量统一的多级路径部署终极指南

    Vue基于环境变量统一的多级路径部署终极指南

    这篇文章主要为大家详细介绍了一个完整的解决方案,从环境变量配置到Nginx部署,确保你的Vue项目可以灵活部署在任何路径下,下面小编就为大家简单介绍一下吧
    2025-08-08
  • Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法

    Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法

    下面小编就为大家分享一篇Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • vue3中defineEmits的使用举例详解

    vue3中defineEmits的使用举例详解

    这篇文章主要给大家介绍了关于vue3中defineEmits使用的相关资料,在Vue3中可以使用defineEmits函数来定义组件的自定义事件,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Vue Element前端应用开发之图标的维护和使用

    Vue Element前端应用开发之图标的维护和使用

    在Vue Element前端应用中,图标是必不可少点缀界面的元素,Element界面组件里面提供了很多常见的图标,因此考虑扩展更多图标,引入了vue-awesome组件,它利用了Font Awesome的内置图标,实现了更多图标的整合,可以在项目中使用更多的图标元素了
    2021-05-05
  • vue中深度选择器图文详解

    vue中深度选择器图文详解

    在Vue的开发中,我们经常会用到外部组件库,下面这篇文章主要给大家介绍了关于vue中深度选择器的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • vue3全局导入bootstrap5方式

    vue3全局导入bootstrap5方式

    这篇文章主要介绍了vue3全局导入bootstrap5方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue-calendar-component日历组件报错Clock is not defined解决

    vue-calendar-component日历组件报错Clock is not defi

    这篇文章主要为大家介绍了vue-calendar-component日历组件报错Clock is not defined解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论