vue3 动态路由设计

Vue3 + Qiankun 微前端进阶:动态权限路由与菜单模块的跨应用协同设计 本文深入探讨了Vue3与Qiankun微前端架构中动态权限路由与菜单模块的跨应用协同设计方案。通过RBAC权限模型、动态路由注册机制和跨应用菜单集成方案,解决了微前端架构下的权限管理挑战,实现主应用与子应用间的权限数据实时同步与菜单一致性展示。 阅读详情

设计流程

1.准备一个请求,从后端获取路由数据

2.这个请求放置在路由守卫(router.beforeEach)next的前面,阻塞next(),当动态组件添加好了在进入页面。

import { createRouter, createWebHistory } from 'vue-router'
// 基础路由 一般回放一个Login页面的对象
import { baseRoutes } from '@/router/basicRoutes'
import {  getUsermMenu } from "@/api";

// 在js/ts里面使用pinia,需要这么使用,多导出一个Pinia,这里就不展开说了,大家自行百度
import { routerListAddCountStore, routerListStore } from '@/stores/index'
import pinia from '@/stores/index'
const routerListAddCountV = routerListAddCountStore(pinia)
const routerListStoreV = routerListStore(pinia)



// 创建路由对象
let router = createRouter({
  // 路由模式hash
  // history:  createWebHashHistory(),
  history: createWebHistory(),
  routes: [...baseRoutes]
})


// 配置路由守卫
router.beforeEach((to, from, next) => {
  //  routerListAddCountV.routerListAddCount 控制整个项目只会请求一次后端路由 (请求后这个Pinia+=1就行了,简单判断)
  // routerListAddCountV.routerListAddCount 是 pinia
  if (routerListAddCountV.routerListAddCount >= 1) {
    console.log('我走不请求数据')
    next()

  } else {
    console.log('我走请求数据')
    // 这个是后端请求路由
    // !!!!!第一个知识点来了,如果你想阻塞next,你必须使用.then的方式调用,将next,放在.then中,看别人是这么解释的,next只能放在同步逻辑中,你写settiomeout 和 async await是不行的。
    getUsermMenu().then(res => {
      // 路由
      let TempRouterList = res.data.menuList
      // !!!!第二个知识点来了,我们的路由都是使用懒加载的,但是后端直接传过来()=》一个箭头函数是不能用的,所以我们要使用vue3(vite)的写法import.meta.glob,注意webpack不是这么写的,webpack的话需要自己去查一下。
      //   ../views/*/*.vue  这个的意思就是会将views/任意/任意.vue 复合这个格式的vue转换成箭头函数
      const modules = import.meta.glob(['../views/*/*.vue', '../views/*/*/*.vue'])

      // 这一段代码的意思就是
      TempRouterList.forEach(element => {
        // 具体的xi
        //  拆解一下    element.component是后端传过来的,是 '/home/layout.vue'
        //  加上 ../views  相当与是补全一下    ,这里用../(相对路径) 是因为不能写@(绝对路径)    
        // 最后打印 element.component  出来是    () => import("/src/views/home/layout.vue")  是这样的
        element.component = modules[`../views${element.component}`]
        if (element?.children.length > 0) {
          // 如果有嵌套路由也记得 懒加载一下
          element.children.forEach(Sonelement => {
            Sonelement.component = modules[`../views${Sonelement.component}`]
          })
        }
        // !!!!第三个知识点,  router就是上面创建的router 一页代码直接使用,  我们先说addRoute这个方法。就是将这个路由关系加进去我们路由的一个方法,添加一个最大的父级即可
        router.addRoute(element)
      });

      // !!!第四个知识点,404页面必须放在我们动态拿来的数据后面,如果放在前面会先匹配404
      let Route404 = {
        path: '/404',
        component: modules[`../views/404/index.vue`],
        name: '404',//命名路由
        meta: {       // 增加
          title: '丢失页面',
          show: false
        }
      }
      // 找不到的页面
      let ANyRoute = {
        path: '/:pathMatch(.*)*',
        redirect: '/404',
        name: 'Any',
        meta: {       // 增加
          title: '任意',
          show: false
        }
      }

      router.addRoute(Route404)
      router.addRoute(ANyRoute)

      TempRouterList.push(Route404)
      TempRouterList.push(ANyRoute)

      // 这个是将我们编辑好的这个路由数组,加入到pinia中,渲染的左侧菜单的时候使用这个Pinia就行
      routerListStoreV.setRouterList(TempRouterList)
      // 这个就是最开始判断》=1的哪个逻辑,这里面其实就是个pinia,pinia的方法是  +=1,这样加载过一次后,就会走不请求的判断
      routerListAddCountV.setRouterListAddCount()

  // !!!第5个知识点, router.getRoutes() 可以获取到你最新addrouter的注册路由, router.opetion并不是最新的
      let newRoutes = router.getRoutes()
      //  默认去第一个
      let goUrl = newRoutes[0].path

      // 如果被注册就去注册的
      newRoutes.some(item=>{
        if(item.path == to.path){
          goUrl = to.path
          return true
        }
      })

      // !!!第6个知识点来了,当你使用addroute加入,并用光杆next(),是会白屏的!必须加上replace: true,这个官方的解释就是等路由更新好再跳转的意思。
      next({ path: goUrl, replace: true })

    })
  }
});








// 配置路由对象
export default router

这是最基础的逻辑,如果需要用到项目中,需要自行加上判断是是否有token,并跳转到Login页面等等

Vue3 + Node.js RBAC 权限系统实战:4张表设计实现前后端动态路由与按钮级控制 本文详细介绍了如何使用Vue3和Node.js构建企业级RBAC权限系统,实现动态路由与按钮级控制。通过精简的4表设计,结合JWT认证和前后端协同,提供了一套完整的权限管理解决方案,适用于复杂的企业应用场景。 阅读详情

相关推荐

Vue3 + Node.js RBAC 权限系统实战:4张表设计实现前后端动态路由与按钮控制

本文详细介绍了如何使用Vue3和Node.js构建RBAC权限系统,通过4张核心表设计实现前后端动态路由与按钮级控制。内容涵盖数据库模型设计、后端权限验证、前端动态路由集成及按钮级权限控制实践,帮助开发者快速掌握现代权限系统的核心架构与实现方法。

abc20899的专栏 419

vue3-动态添加路由

通过 import.meta.glob() 导入的路由default就是路由对象3. 添加路由因为获取本地的路由文件刷新后会消失,在pinia中设置一个方法用来在页面刷新后重新加载路由loadLocal 具体操作和上面添加路由的方式相同。刷新页面后,会重新加载 pinia, 在pinia加载完后再加载本地数据,添加路由。

m0_74019046的博客 3593

Vue 动态添加路由及生成菜单的方法示例

写后台管理系统,估计有不少人遇过这样的需求:根据后台数据动态添加路由和菜单。 为什么这么做呢?因为不同的用户有不同的权限,能访问的页面是不一样的。 在网上找了好多资料,终于想到了解决办法。 动态生成路由 利用 vue-router 的 addRoutes 方法可以动态添加路由。 先看一下官方介绍: router.addRoutes router.addRoutes(routes: Array) 动态添加更多的路由规则。参数必须是一个符合 routes 选项要求的数组。 举个例子: const router = new Router({ routes: [

vue3项目中实现动态路由

完成效果 第一步:配置静态路由 第二步实现登录和安全守卫 第三步:发送请求获取用户动态菜单 配置二级动态 刷新导致动态路由匹配不到 直接 404 第五步设置菜单数据缓存 最后实现最终效果

m0_74331185的博客 1万+

R语言分段回归

1.利用虚拟变量进行线性回归 (MEdata.csv的数据来源:https://github.com/ChenQihome9/优快云-Data-Library/blob/master/MEdata.csv) 问题13:针对TAX~GDP,使用分段回归方法,找到其回归方程。编程,并根据程序结果叙述如下几方面问题:(1)分几段最佳?(不超过5段内)(2)分段位置定在哪儿最佳?(3)写出最佳方...

ChenQihome9的博客 1万+

共享最近邻相似度

共享最近邻相似度 第三十四次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。本文作为基于图的聚类的第二部分,主要针对“共享最近邻相似度(Shared Nearest Neighbour)”以及使用该度量的“Jarvis-Patrick聚类”进行介绍。其他基于图的聚类算法的链接可以在这篇综述《基于图的聚类算法综述(基于图的聚类算法开篇)》的结尾找到。 S...

Ἥλιος 7606

Vue3动态路由(Vite+Vue3+TS+Mock)

vue3动态路由的配置。

XUMENGCAS的博客 3万+

RAGFlow + GraphRAG+ 知识图谱 + QwQ32B探索实践

RagFlow 是一款开源的 RAG(Retrieval-Augmented Generation)引擎,专注于深度文档理解,能够助力企业及个人构建高效的 RAG 工作流程。借助大语言模型(LLM),它可以精准处理各种复杂格式的数据,为用户提供可靠的问答服务,并附上详实的引用依据。

技术引领业务创新 8万+

vue3+动态路由

动态路由,也就是不是写死的路由,根据自己的需求加载不同的页面;现在很多的后台管理项目就是根据用户角色的不同分配不同的功能菜单(页面);实现持久话存储,然后在路由前置守卫用 addRoute 动态添加路由,对页面进行渲染。前端调用 /api/routers 传入 uid 获取用户路由表。先配置静态的路由,接着添加动态路由 ==> router/route.js。根据用户登录的角色返回可以访问的页面路由,前端将路由存储到。将路由表格式成树结构, 路由表结构mockDB/router.js。...

gsy445566778899的博客 1万+

【论文阅读1】机理引导的残差学习用于电池全生命周期状态监测 | Nature Communications

本文提出了一种机理引导的残差学习框架,用于提升电池全生命周期内荷电状态(SOC)和健康状态(SOH)的监测精度。该方法融合等效电路模型的先验知识与机器学习,设计了修正模型和补偿模型两种通用框架。实验验证表明,该方法在三种不同类型电池数据集上均表现出色,SOC和SOH估计误差较传统方法降低50%以上,且在未见工况下仍保持良好外推能力。模型具有强鲁棒性,在减少训练数据量和降低采样频率时性能稳定,并兼具物理可解释性。该框架无需离线测试和运行中校准,为电池安全监测提供了有效解决方案。

qq_21843433的博客 615

【backtrader保姆级教学】投资组合回测

method1:探索投资组合的最有方案,使用蒙特卡洛模拟Markowitz模型。# 提取最小波动组合对应的权重, 并转换成Numpy数组。# 绘制收益-标准差的散点图,并用颜色描绘夏普比率。# 在收益-风险散点图中突出风险最小的点。:param any_day: 任意日期。# 将该点坐标显示在图中并保留四位小数。password = “替换密码”# 找到标准差最小数据的索引值。user = “替换账号”# 计算GMV投资组合收益。# 计算每项资产的夏普比率。# 设置无风险回报率为0。

weixin_38132951的博客 2315

vue3 + vite实现动态路由,并进行vuex持久化设计

到这已经完成了根据权限,完成动态路由设计,但是还有一点点的问题,比如:刷新页面后,内容变得空白,这是由于刷新之后,路由还没有重新获取,所以导致空白,我的思路是做一个数据格式化。2、我们在登录的时候,会将token,用户信息保存在localStorage中,而动态的路由是根据后端接口返回得来的,我们获取返回的信息,并将获取的数据传递到vuex。3、将router.js中的路由删除,只留下基础的框架,将children中的数据删除,如图。4、在侧边栏组件中 Aside.vue,获取动态的路由。

qq_65949679的博客 601

UG NX二次开发基础篇-外部模式与DLL内部模式(二 DLL内部模式)

通常情况下,我们希望我们的外挂,在UG启动的时候,就自动加载我们的外挂,并以菜单和工具条的方式,显示在UG上面。当然,这也是市面上所有外挂的操作,因为您不可能要求你的用户,以手工加载的方式,去调用你的外挂吧。在上一篇中,有粉丝留言说,启动 bat 文件,启动EXE外挂,会提示无法找到DLL的错误,这是因为UG的环境变量设置有问题,这里,我们把BAT文件作一个修改,直接改为实际目录。EXE外部模式,还有很多部分需要添加的,如参数的传递、输出消息的显示、UG操作的消息显示,等等。Dll执行结束后,会调用。

u014657217的博客 1654

Django+vue3权限菜单rabc设计和动态路由

最重要的menu表已经设计完成,那么接下来就更简单了,还需要一个获取所有路由的方法,当添加权限的时候,可以方便的选择相应的路由权限。权限控制的话,可以基于Django的permission进行控制,并通过访问api的URL操作。因此,需要对menu表进行设计,由于涉及到了前端vue路由,因此,menu模型字段比较多,如下。前端是基于pure-admin二次开发的, 省去了前端开发,直接上手。本次是基于Django和vue实现。服务器设计及部分代码。

第九系艾文 2271

[AI] 企业内网部署大模型的三种常见方案:从“能用”到“好用”的技术选型指南

企业内网部署大模型的三种方案解析:本地模型安全但门槛高,平台方案(如Dify)最平衡推荐,混合架构适合进阶需求。关键路径是渐进式演进,从快速验证到平台化建设,核心在于流程优化而非单纯选模型。数据安全、成本可控和工程落地能力是决策重点。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 770

【DRAM存储器二】Sense Amplifier

详述DRAM颗粒中感应放大器功能、电路结构、工作原理和操作波形

highman110的博客 7199

权限治理篇:Vue3 + Spring Security + JWT 认证 + 动态菜单路由 + RBAC + 审计日志全链路设计与实战

权限治理篇:Vue3 + Spring Security + JWT 认证 + 动态菜单路由 + RBAC + 审计日志全链路设计与实战

JIANqiao19931029的博客 1264

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Vue3 动态路由与按钮级权限:后台管理系统的权限设计

登录后看到什么菜单、能点什么按钮——权限是后台系统的骨架。这篇文章从若依的 RBAC 模型出发,讲清楚前端动态路由怎么生成、按钮级权限怎么控制、以及四个你一定踩过的坑。

原创作者 MqCode(全栈开发者,印刷包装行业 MES+CRM 系统独立开发),欢迎自由转发 252

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue动态权限路由

vue动态权限路由

Jack, what else can you do besides holding your little darling? 3404

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

vue2路由和vue3路由区别及原理

Vue 3 的相较于 Vue 2 更加现代化和灵活,并且对 TypeScript 进行了更好的支持。与此同时,Vue 3 的路由实现基于 Composition API,使其能够更好地与 Vue 3 的设计理念相契合,提升了开发体验和可维护性。

2401_86337335的博客 1299

d38: PostgreSQL 简单入门与 Vue3 动态路由实现

PostgreSQL 简单入门与 Vue3 动态路由实现

2301_79760424的博客 1160

Vue3 根据路由配置实现动态菜单

最近在学习Vue3的相关语法,在阅读官方文档的时候觉得官方文档的菜单栏比较简洁美观,于是想着能不能自己实现一个类似的多级菜单。代码大部分由AI所做(感谢活在这个人工智能时代)。 主要就是路由设计以及菜单设计在 中进行路由配置,配置的信息示例如下: 各参数解释如下:菜单由两个组件实现:、,同时使用递归思想实现多级菜单渲染。递归子菜单组件,负责:显示的的子菜单,主菜单 组件中调用,如果有子菜单,则显示子菜单下拉框,效果如下图(具体显示位置有css控制): 组件主要代码如下: AdvancedMenu 组件 主要

qq_62254095的博客 1343

【Vue3】Vue3+Pinia+Layout+Router实现动态路由与布局

在Vue3中使用Pinia、Layout、Router实现动态路由与布局

null 1747

前端路由权限管理实战:基于routilux的管道化设计与Vue 3集成

在前端开发中,路由权限管理是构建安全、可维护后台系统的核心环节。其原理在于通过预定义的规则,控制用户对特定页面或功能的访问权限,从而保障系统安全与数据隔离。从技术价值看,良好的权限方案能显著提升代码可维护性、降低耦合度,并增强用户体验一致性。常见的应用场景包括动态侧边栏菜单生成、按钮级权限控制以及多角色系统下的差异化访问。本文聚焦于一个轻量级工具库routilux,它采用管道化处理思想,将复杂的权限判断抽象为可组合的处理器,实现声明式的路由过滤与转换。通过集成Vue Router与状态管理,开发者可以高效构

weixin_30274627的博客 269
上一篇: width,min-width,max-width三者的区别及如何使用
下一篇: vue3 按钮权限最新写法使用指令写法控制
Technology_hands
博客等级 码龄5年 22粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值