Vue-Router 第二节:动态路由

Vue-Router 第二节:动态路由

1、动态路由

在日常开发中,我们某一组的用户(ID不同)要看到同一个组件,例如技术部要看到相关技术部的文档页面,这时我们可以用到动态路由 ;在路由配置时 使用一个动态字段来实现。称之为路径参数

创建组件:user

下面我们来添加一个/user/...的动态路由。

javascript 复制代码
// router/index.ts页面
const routes: Array<RouteRecordRaw> = [
    // 可直接导入或者引入
    {
        path: '/',
        component: () => import("@/views/home/index.vue"),
    },
    {
        path: '/about',
        component: About
    },
    {        // 动态字段以:开始 这里就是id                      
        path: '/user/:id',
        component: import("@/views/user/index.vue")
    }
]

user/101,user/102等这些url都会进入这个路由组件中。以下模拟下:

xml 复制代码
// APP.vue页面
<template>
  <div>
    <router-link to="/about">go About</router-link>
    <br>
    <router-link to="/">go Home</router-link>
    <br>
    <router-link to="/user/A">模拟A进入技术部</router-link>
    <br>
    <router-link to="/user/B">模拟B进入技术部</router-link>
    <router-view />
  </div>
</template>
​
<script setup lang="ts">
​
​
</script>
​
​
<style scoped></style>
​

2、动态路由参数的变化

点击这两个路由都可以进入我们的user 组件中。在我们user 组件中可以通过$route.params来获取我们传的参数。在这种使用情况下,组件重复使用肯定是比卸载再创建高效多,所以此组件的生命周期是无效的,我们要监听其参数的变化,就可以来监听$route.params

3、匹配404Not found 路由

在我们上面我们匹配的路由都是/user 当我们想匹配所有路径的路由,使用正则表达式来匹配URL。

javascript 复制代码
// router/index.ts页面
const routes: Array<RouteRecordRaw> = [
    // 可直接导入或者引入
    {
        path: '/',
        component: () => import("@/views/home/index.vue"),
    },
    {
        path: '/about',
        component: About
    },
    {
        path: '/user/:id',
        component: import("@/views/user/index.vue")
    },
    {
        path: '/:pages(.*)*',      // 使用正则表达式来匹配URL (.*)表示可以匹配任何数量的任何字符 *表示前面的元素(.*)可以出现零次或多次
        component: import("@/views/notFont/index.vue")
    }
]
ini 复制代码
// 模拟任意url  
<router-link to="/not/page/notfont">进入其他不知名页面</router-link>
相关推荐
前端小趴菜0513 分钟前
vue3项目优化方案
前端·javascript·vue.js
Irene19911 小时前
对比总结:Vue3中的 watch 和 Pinia中的 $subscribe
vue.js·pinia·watch·subscribe
Luna-player1 小时前
gitee上的vue项目,刚刚创建了一个分支,怎么在本地上拉取分支项目
前端·vue.js·gitee
徐小夕1 小时前
借助AI,1周,0后端成本,我开源了一款Office预览SDK
前端·vue.js·github
还是大剑师兰特2 小时前
Vue3 按钮切换示例(启动 / 关闭互斥显示)
开发语言·javascript·vue.js
SuperEugene2 小时前
前端代码注释规范:Vue 实战避坑,让 3 年后的自己还能看懂代码|项目规范篇
前端·javascript·vue.js
凉辰2 小时前
uniapp实现生成海报功能 (开箱即用)
javascript·vue.js·小程序·uni-app
OpenTiny社区2 小时前
TinyRobot Skills技巧大公开:让 AI 成为你的 “UI 搭建”副驾驶
前端·vue.js·ai编程
乌拉那拉丹3 小时前
vue3 配置跨域 (vite.config.ts中配置)
前端·vue.js