首页 > 其他分享 >vue3-路由遇到的问题

vue3-路由遇到的问题

时间:2023-09-16 12:32:55浏览次数:31  
标签:vue 遇到 vue3 router import path pathMatch 路由

在Vue 3中,使用Vue Router来管理应用程序的导航和路由。下面是Vue Router的一些常见使用方法:

    • 通过npm或yarn安装Vue Router:npm install vue-routeryarn add vue-router
    • 在主文件(通常是main.js)中导入Vue Router并创建一个实例:
    import { createApp } from 'vue'
    import router from './router' //这个地方表示引入router文件夹下的index.ts 导入Vue Router到main.ts
    import store from './store'
    import 'element-plus/dist/index.css'
    import ElementPlus from 'element-plus'
    import zhCn from "element-plus/es/locale/lang/zh-cn"
    import "lib-flexible/flexible.js" 
    
    createApp(App).use(ElementPlus, {
        locale: zhCn,
      }).use(store).use(router).mount('#app')  //这个use(router)进行挂载
    
    • 在views中创建index.ts文件
    //导入创建路由对象方法和hash 模式路径方法
    import { createRouter, createWebHashHistory } from 'vue-router
    //创建路由表
    const routes = [
    {
        path: '/',
        name: 'Home',
        component: () => import('../views/Home.vue'),
    },
    {
        path: '/about/:id',
        name: 'About',
        component: () => import('../views/About.vue')
    },
    ]
    //创建路由对象
    const router = createRouter({
      history: createWebHashHistory(),//hash模式路径
      routes//路由表
    })
    //导出路由对象
    export default router
    • 如何使用路由
    //to属性指定路由路径
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link>
    //router-view为路由视图
    <router-view/>
    • 路由守卫(可以使用权限控制)

    路由守卫: Vue Router提供了一系列的路由守卫用于在路由跳转时执行特定的逻辑。你可以使用beforeEachbeforeResolveafterEach等方法来定义路由守卫:

    router.beforeEach((to,from,next)=>{
      //to是到达的路由
      //from是开源的路由
      //next跳转路由的函数
      const adminPaths=['/postList']
      const user = JSON.parse(localStorage.getItem("user")||'{}')
      if(user.roleName!=='admin' && adminPaths.includes(to.path)){
        next('/403'); //没有路径访问权限
      }else next()
    })
    • 匹配所有路径

    常规参数只会匹配被 / 分隔的 URL 片段中的字符。如果想匹配任意路径,vue2中我们可以使用通配符 (*):,vue3中用 "/:pathMatch(.*)"

    {     
      // 匹配所有路径  vue2使用*   vue3使用/:pathMatch(.*)    
      path:"*",//vue2
      path: "/:pathMatch(.*)", 
      path: '/stu:pathMatch(.*)',//可以以什么开头    
      name: "404",     
      component: () => import('../views/404.vue')  
    }

    举个例子

     {
        path: '/:pathMatch(.*)',//vue3
        name: '404',
        component: () => import( '../views/404.vue')//这是另外一种导入路由所需模块的方式
      }

    当使用一个通配符时,$route.params 内会自动添加一个名为 pathMatch 参数。它包含了 URL 通过通配符被匹配的部分:

    //404.vue
    {{$route.params.pathMatch}}
    //返回地址名


    标签:vue,遇到,vue3,router,import,path,pathMatch,路由
    From: https://blog.51cto.com/u_13794952/7492423

    相关文章

    • 深入探讨Spring Cloud的服务路由策略
      1.前言SpringCloud是一个开源的微服务框架,它提供了一系列的组件来帮助我们构建和管理微服务应用。其中,服务路由是SpringCloud中非常重要的一个组件,它可以帮助我们实现服务的负载均衡和故障转移。本文将深入探讨SpringCloud的服务路由策略,包括如何选择路由策略、如何配置路由策......
    • 不再困惑:一文读懂Vue2与Vue3的主要差异
      Vue3相对于Vue2有很多改进和新特性。以下是一些主要的区别:性能更好:Vue3的性能比Vue2更好,因为它使用了更少的代码和更高效的算法。例如,Vue3使用Proxy代替了Object.defineProperty来监听数据变化,这使得Vue3的性能更高。组合式API:Vue3引入了组合式API,这是一种新的编写组件逻辑的方式。......
    • Vue3开发环境搭建全攻略:Vite的详细介绍
      Vite简介Vite这个单词是一个法语单词,意思就是轻快的意思。它和我们以前使用Vue-cli的作用基本相同,都是项目初始化构建工具,相当于Vue项目构建的第二代产品,当然它也包含了项目的编译功能。需要注意一下Vite的生产环境下打包是通过Rollup来完成的。Vite特性介绍Vite主打特点就是轻快冷......
    • 12-1 IP路由抓包分析
      实验一(理解路由器工作方式)理解不同网段的通信过程,三层设备如何进行路由选择和转发拓扑配置PC1配置,PC2配置参考PC1AR1配置<Huawei>sys[Huawei]sysAR1[AR1]integi0/0/1[AR1-GigabitEthernet0/0/1]ipaddress192.168.1.254255.255.255.0[AR1-GigabitEthernet0/0/......
    • 主路由访问二级路由下的网段
      1、问题如下:主路由openwrt的LAN口接了一个二级路由Padavan,现在想要实现PC1访问PC2,我在openwrt里面配置静态路由去往192.168.2.0/24下一跳地址为二级路由WAN口ip192.168.1.2,pc1能ping通pc2的网关,但是pc1却ping不通pc2,pc2能ping通pc1,只能单向通信,请大佬帮我看看什么问题?......
    • vue3.3.x setup 新实验性特性 defineModel 定义多个属性
      由于有些业务组件需要定义多个响应式props,类似这种(比较懒,没上ts),在vue3.3.x以前,如果不用三方库,代码会变得很繁琐<scriptsetup> constprops=defineProps({ modelValue:{ type:Object, default:()=>({}) }, fields:{ type:Object, default:()=>(......
    • vue3videplayer播放m3u8视频流注意事项
      前言使用vue3开发项目时,碰上需要做一个视频流列表的页面,最开始是想获取所有列表数据后创建对应的video标签,这样默认获取第一帧作为封面,同时暂停视频减轻不断请求的压力。但开发后发现视频就算暂停后也会继续请求视频流,多个视频反而会导致页面卡顿。方案手动获取视频的第一......
    • 通过docker-compose安装milvus遇到无法连接etcd的问题no route to host
      通过docker-compose安装milvus发现milvus-standalone老是报错noroutetohost连接不到etcd然后等一会milvus-standalone就挂了 后来发现是服务器上的iptables设置有问题需要在如下sh脚本中设置 br-7cedb15ab1cf [root@nova-dev-iecsh]#pwd/opt/sh[root@nova-dev-iec......
    • IP 路由基础
      在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。路由是数据通信网络中最基本的要素。路由信息是指导报文转发的路径信息,路由过程就是报文转发的过程。路由概述路由初识......
    • java的jdbc插入的时候,遇到null情况报错问题
      分析原因:在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。解决办法:参数增加jdbcType标识数据类型。(注意:这时候参数{}前统一用#)<inser......