【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

简介: 用原生js实现省市区联动

【前言】在通用的后台管理项目的开发中,不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维模式进行一个针对于用户权限来判断是否显示出某个页面/页面中的某一个结构。(RBAC思想精简就是说:我们给用户添加角色,给角色添加权限。)

⭐一、 addRoutes的使用

作用:动态的添加我们的路由到总的路由实例当中去。

1 .直接在我们初始化好的HomeView文件中写下个按钮绑定事件

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
    <button @click="hAddRoute" style="width: 300px;font-size: 50px;">addRoute</button>
  </div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
import router from '@/router'
export default {
  name: 'HomeView',
  components: {
    HelloWorld
  },
  methods: {
    hAddRoute () {
      router.addRoutes([{
        path: '/abcD',
        component: () => import('@/views/abcD')
      }])
    }
  }
}
</script>

2.在相对应对的路由中写下我们动态追加进去的组件

在views/abcD中写下

<template>
    <div class="cbcd">
    <h1>这个是abcD的页面</h1>
  </div>
</template>

是的,这样的话我们就完成了我们路由的动态添加,来测试下

52e7f1a8484f411a8d3ddf477d4e3d9e.png

当我在路径中输入abcD路径时没有出现所对应的页面6bc36e18c0e241848f7276c7f9420337.png

当我点击addRoute的时候,我们就将这个路径所对应的组件挂载到当前的路由实例当中了

59857cf6d513497c97fb197cade32a4d.png

当我再次在地址栏追加页面的时候我们就成功的访问到了这个路由所对应的页面喽~

⭐二、 动态路由设置思路

1.根据登录时候的用户信息从接口中提取出该用户的权限信息(可以访问哪些页面)

2.修改router/index中的路由信息,写下我们的动态路由表(全部的动态表)

3.用户点击登录的时候,调用vuex当中的异步请求进行一个token的存储

4.有token就代表有身份了,根据token是否存在再去路由守卫中判断有没有获取当前用户信息,如果没有则就调用用户信息的一个相关接口

,此刻提取接口信息中关于访问权限的相关组件名称在vuex中return返回出来这个包含路由权限相关的数组

5.拿到这个返回值之后(假设记作为menus),我们与我们的动态路由表进行一个过滤的操作,将动态路由表进行一个filter过滤,返回menus中包括的动态路由表标识信息

6.将这个过滤出来的结果进行一个router.addRoutes(过滤之后剩下来的值)

7.同时将过滤出来的动态旅游表再存入vuex中,可写一个computed方法用来将我们的静态动态路由表进行一个结合,随后遍历当前动静表即可完成路由信息的渲染。

注意点:

一、页面刷新后空白需要加上:

next({ ...to, replace: true })

二、动态生成的路由表不可在this.$router.options.routes中被获取,需要从vuex中过去我们的动态表

至此本文结束,愿你有所收获! 期待大家的关注与支持! 你的肯定是我更新的最大动力!!!


相关文章
|
2月前
|
JavaScript 前端开发 开发者
Vue.js 框架大揭秘:响应式系统、组件化与路由管理,震撼你的前端世界!
【8月更文挑战第27天】Vue.js是一款备受欢迎的前端JavaScript框架,以简洁、灵活和高效著称。本文将从三个方面深入探讨Vue.js:响应式系统、组件化及路由管理。响应式系统为Vue.js的核心特性,能自动追踪数据变动并更新视图。例如,通过简单示例代码展示其响应式特性:`{{ message }}`,当`message`值改变,页面随之自动更新。此外,Vue.js支持组件化设计,允许将复杂界面拆分为独立且可复用的组件,提高代码可维护性和扩展性。如创建一个包含标题与内容的简单组件,并在其他页面中重复利用。
58 3
|
9天前
|
JavaScript
vue项目中使用vue-router进行路由配置及嵌套多级路由
该文章详细说明了如何在Vue项目中配置和使用vue-router进行单页面应用的路由管理,包括设置嵌套路由和实现多级路由导航的示例。
vue项目中使用vue-router进行路由配置及嵌套多级路由
|
2月前
|
JavaScript API
vue 批量自动引入并注册组件或路由
vue 批量自动引入并注册组件或路由
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
15 4
|
8天前
|
JavaScript 网络架构
|
12天前
|
JSON JavaScript 数据格式
Vue路由params、query参数丢失解决
该文章介绍了在Vue中使用`params`和`query`进行路由参数传递时,如何通过`sessionStorage`或`localStorage`解决参数丢失的问题。
15 2
|
11天前
|
JavaScript
Vue3基础(20)___Vue3配置错误路由重定向写法
本文介绍了Vue 3中配置错误路由重定向的正确写法,包括使用参数和自定义正则表达式来定义通配符路由。
26 0
Vue3基础(20)___Vue3配置错误路由重定向写法
|
2月前
|
缓存 JavaScript
vue的多路由项目开发,您还在手动拼接路由名?
【8月更文挑战第20天】vue的多路由项目开发,您还在手动拼接路由名?
43 1
vue的多路由项目开发,您还在手动拼接路由名?
|
2月前
|
JavaScript
Vue学习之--------路由的query、params参数、路由命名(3)(2022/9/5)
这篇文章详细介绍了Vue路由中的query参数、命名路由、params参数以及props配置的使用方式,并通过实际项目案例展示了它们在开发中的应用和测试结果,同时解释了`<router-link>`的`replace`属性如何影响浏览器历史记录。
Vue学习之--------路由的query、params参数、路由命名(3)(2022/9/5)
|
2月前
|
缓存 JavaScript 数据安全/隐私保护
Vue学习之--------路由守卫(2022/9/6)
这篇文章详细介绍了Vue路由守卫的概念和应用,包括全局守卫、独享守卫和组件内守卫的实现方法,并通过实际代码示例和测试效果展示了如何对路由进行权限控制,以及Vue路由器的两种工作模式:hash模式和history模式。
Vue学习之--------路由守卫(2022/9/6)

相关实验场景

更多
下一篇
无影云桌面