位置: IT常识 - 正文

vue动态路由添加,vue-router的addRoute方法实现权限控制,添加根路由和子路由(vue 动态添加路由)

编辑:rootadmin
vue动态路由添加,vue-router的addRoute方法实现权限控制,添加根路由和子路由 addRoute路由分为静态路由和动态路由静态路由和动态路由的优缺点动态路由实现思路:动态路由遇到的问题与解决方式动态添加子路由路由分为静态路由和动态路由静态路由和动态路由的优缺点1、中大型项目,采用的都是动态路由方式,因为后台导航目录运营人员可能会新增菜单,新增菜单后,前端人员得在路由表手动填加上,这样导航才能点击才能对应上页面,这样比较麻烦。2、如果是动态路由,运营人员新增目录后,因为我是动态路由获取永远是最新的路径,一次性通过动态填加的方式加进去,后边就不用管路由的事了,只关心页面就可以了,也是对权限管理的一种方法。动态路由实现思路:在全局路由守卫中,先判断token值有没有。有的话先看是否存储过,如果存储过直接,页面调用渲染,如果没有,就请求接口,把路由表存储下,除非没有token,跳转登录页面路由表里-把那些常规路由(不需要权限的路由,事先都写到路由表里)。把需要权限的路由通过router.addRoute()动态填加到对应的子路由里 。动态填加的路由需要处理下。因为后端传给你的是树状结构,一般前端需要把树结构处理成列表结构(通过递归,不断的获取路径,名字那些信息),填加到路由表里。(我没写 )动态路由遇到的问题与解决方式登录后路由表里在次加载一遍动态路由-解决第1次页面点击找不到路径问题,因为路由是动态生成的,登录后路由没有被在次生成,路由表里是空的。所以在路由里要在次生成一遍也有可能是因为你的路由表里有通配路由,你的书写位置也不是入口文件处,可能就是404页面。登录后跳转其它页面,如果刷新,页面找不到问题?原因是路由是动态的,它是在登录后生成的,而其它页面没有在次生成动态路由,所以就找不到。解决办法:可在路由里,在生成一遍动态路由。这样不管在后台哪个页面,一刷新都会先执行。(路由先走)具体方法是在入口文件当中,通过全局前置路由守卫获取router路由(考虑到在main.js中这个文件比较繁琐),新文件重新导入 动态添加子路由

推荐整理分享vue动态路由添加,vue-router的addRoute方法实现权限控制,添加根路由和子路由(vue 动态添加路由),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue动态路由加载组件,vue 动态添加路由,vue 动态添加路由,vue动态路由添加 没生效,vue动态路由添加重复问题,vue动态路由添加重复问题,vue动态路由添加 没生效,vue动态路由添加 没生效,内容如对您有帮助,希望把文章链接给更多的朋友!

vue动态路由添加,vue-router的addRoute方法实现权限控制,添加根路由和子路由(vue 动态添加路由)

获取主路由的一个子数组信息。

router.beforeEach((to,from,next)=>{ console.log(router);/* 路由对象 */ console.log(router.options.routes);/* 前端路由实例对象数组(根组) */ console.log(router.options.routes[0]);/* 需要在里面动态添加子路由的一个根组,插入的也是这个根组对象 */ console.log(router.options.routes[0].children);/* 获取这个根组下的子路由数组 *//*纯粹的一次添加路由,其实通过服务器根据权限获取路由信息*/ if(router.options.routes[0].children.length == 4 && to.path!="/login"){ router.options.routes[0].children.unshift({path:"test",component:()=>import("@/views/test.vue")}) router.addRoute(router.options.routes[0]); next({ path: to.path, // 动态添加一个新的路由 replace: true // 重定向,为了让刚刚添加的路由规则生效 }); }else{ next(); } })

也可以写成:

let newT = router.options.routes[0];/* 需要在里面动态添加子路由的一个根组,插入的也是这个根组对象 */if (newT.children.length == 4 && to.path != "/login") {//条件保护,防止全局路由守卫死循环执行。 newT.children.unshift({ path: "test", component: () => import("@/views/test.vue") }) //给子路由添加一条数据 router.addRoute(newT); next({ path: to.path, replace: true });} else { next()}

可以看的出来:addRoute 添加一条新的路由记录是一个对象 router.addRoute({});同时这个路由作为现有路由的子路由,如果路由有一个name,或者地址一样,就会删除之前的路由信息,重新加进去这个路由。或者已经有一个与之名字相同的路由,它会先删除之前的路由; 注意:新添加的路由并不会触发新的导航 需要:

next({ path: to.path, // 动态添加一个新的路由 replace: true // 重定向,为了让刚刚添加的路由规则生效});

vue-router的addRoute方法实现权限控制 getRoutes()方法是获取这个这个路由数据的数组实例,来实现一个条件控制。

router.beforeEach((to,from,next)=>{ if(router.getRoutes().length==3 && to.path === "/admin"){ router.addRoute({path:"/admin",name:"admin",component:()=>import(/*webpackChunkName: "admin"*/"@/views/Admin.vue")}) next({ path: to.path, replace: true }); } next();})
本文链接地址:https://www.jiuchutong.com/zhishi/294592.html 转载请保留说明!

上一篇:VUE设置和清除定时器(vue清空页面数据)

下一篇:Vue3 —— 使用Vite配置环境变量(vue3 + ts)

  • 怎么避免微信封号(怎样避免微信封号)

    怎么避免微信封号(怎样避免微信封号)

  • 强制关闭全屏卡死程序(强制关闭全屏卡死程序快捷键)

    强制关闭全屏卡死程序(强制关闭全屏卡死程序快捷键)

  • 喵喵机连不上手机怎么办(喵喵机p1连不上手机)

    喵喵机连不上手机怎么办(喵喵机p1连不上手机)

  • 微信签名不对,请检查签名是否与开放平台上填写的一致(微信签名不对与开放平台不一致)

    微信签名不对,请检查签名是否与开放平台上填写的一致(微信签名不对与开放平台不一致)

  • 通话级别港澳台通话是什么意思(港澳台通话级别有用吗)

    通话级别港澳台通话是什么意思(港澳台通话级别有用吗)

  • 淘宝主页在哪里(淘宝主页在哪里修改)

    淘宝主页在哪里(淘宝主页在哪里修改)

  • 钉钉看回放有时长记录吗(钉钉看回放有时长吗)

    钉钉看回放有时长记录吗(钉钉看回放有时长吗)

  • 淘宝支付顺序怎么设置(淘宝支付顺序怎么弄)

    淘宝支付顺序怎么设置(淘宝支付顺序怎么弄)

  • 手机嗡嗡响是怎么回事(手机嗡嗡响是怎么回事但是没有显示)

    手机嗡嗡响是怎么回事(手机嗡嗡响是怎么回事但是没有显示)

  • 宿舍没有wifi怎么办(宿舍没有wifi怎么用投影仪)

    宿舍没有wifi怎么办(宿舍没有wifi怎么用投影仪)

  • 苹果手机没充满电拔了对手机有坏处吗(苹果手机没充满能拔吗)

    苹果手机没充满电拔了对手机有坏处吗(苹果手机没充满能拔吗)

  • 苹果ios11小白球怎么设置(苹果手机小白球消失了怎么显示出来)

    苹果ios11小白球怎么设置(苹果手机小白球消失了怎么显示出来)

  • 华为nova2是多少寸的(华为nova2是多少赫兹)

    华为nova2是多少寸的(华为nova2是多少赫兹)

  • 屏蔽好友是什么意思(屏蔽此人是删除好友吗)

    屏蔽好友是什么意思(屏蔽此人是删除好友吗)

  • 微信如何设置来新信息没有内容(微信如何设置来电视频铃声)

    微信如何设置来新信息没有内容(微信如何设置来电视频铃声)

  • 连手机热点会查到ip吗(连手机热点会查手机吗)

    连手机热点会查到ip吗(连手机热点会查手机吗)

  • vivoz5的闪息灯在哪里(vivoz5x信息闪光灯在哪里)

    vivoz5的闪息灯在哪里(vivoz5x信息闪光灯在哪里)

  • vivonex3支持无线充电吗(vivonex3支持wifi6)

    vivonex3支持无线充电吗(vivonex3支持wifi6)

  • &=是什么意思(是什么意思英语翻译成中文)

    &=是什么意思(是什么意思英语翻译成中文)

  • oppoA57是什么处理器(oppo a57是什么)

    oppoA57是什么处理器(oppo a57是什么)

  • wifi智能遥控有什么用(无线智能遥控)

    wifi智能遥控有什么用(无线智能遥控)

  • 优酷视频如何取消自动续费(优酷视频如何取消扣费)

    优酷视频如何取消自动续费(优酷视频如何取消扣费)

  • 蘑菇街如何延长收货(蘑菇街怎么延迟收货)

    蘑菇街如何延长收货(蘑菇街怎么延迟收货)

  • 微信一天能删除多少人(微信一天能删除多少群聊)

    微信一天能删除多少人(微信一天能删除多少群聊)

  • 什么是办税员编号
  • 委托合同有效吗
  • 消费税可以在企业抵扣吗
  • 报销金额大于发票金额几毛钱
  • 运输企业车辆折旧一次性折旧
  • 建筑物进项税额可以抵扣吗
  • 已认证的发票如何冲红步骤
  • 固定资产核算的心得体会
  • 财政科技经费专项拨款的会计处理
  • 红字发票信息表是销方还是购方开
  • 在建工程待摊支出例题
  • 未开票收入增值税如何计提
  • 工业企业小规模纳税人的认定标准
  • 学校应该缴纳的税
  • 股票内在价值计算公式中级财务管理
  • 税收的凭证有哪几种
  • 企业可以采用在产品按固定成本计算法的有
  • 会计师事务所执业许可和监督管理办法
  • 免税收入与不征税收入的区别与联系
  • 留存收益会计科目编号
  • 转出的进项税额是加还是减
  • mac dock不见了
  • 三星电脑安装系统按哪个键
  • autorun.exe无法运行
  • uniapp微信小程序头像获取与服务器对接
  • 很有意思的一段话
  • 期末库存盘点表
  • 应收账款净额可以是负数吗
  • 办公楼装修费两万合理吗
  • framework教程
  • 应税货物及劳务无法录入
  • 怎么搭建本地ota
  • mac datagrip
  • linux定时任务详解
  • 监控设备属于固定资产还是在建工程
  • 资金结存属于什么会计科目
  • 没有发票的费用汇算清缴的时候怎么调出来
  • phpcms v9用户手册
  • 电子产品报废清理是否缴纳教育附加税
  • 税率变了
  • 税控设备抵减增值税必须当月抵减吗
  • 预收账款可以通过什么科目核算
  • 没有收入该怎么办
  • 应付账款的账务处理
  • 小规模纳税人是查账征收还是核定征收
  • 职工教育经费是否可以抵扣进项税
  • 工会年末结余会计分录
  • 退货回去需要把原包装保留吗
  • 私立医院怎么做不被骗的事情
  • 出口货物索赔如何确认收入
  • 微信转账和支付宝转账哪个更安全
  • 享受研发费用加计扣除需要什么条件
  • 影视行业成本核算方案
  • 出纳提取现金的业务流程
  • sql server数据库怎么导出
  • mysql5717安装及配置超详细教程
  • iis6设置
  • linux存在的意义
  • 电脑上view是什么意思
  • windows提示音神曲
  • FastDFS4和Ubuntu12安装及部署步骤
  • linux去掉文件换行符
  • opware12.exe - opware12进程是什么文件 有什么用
  • 你可能不知道的中融新大
  • win7电脑flash安装教程
  • wp8.1升级10
  • es6展开符
  • js原生实现call
  • 批量管理远程桌面
  • 虚拟主机 推荐
  • javascript的应用
  • nodejs爬虫模拟浏览器
  • android下载文件保存到本地
  • python中ans
  • 湘医保缴费怎么网上缴费
  • 留抵税额可以留抵多久
  • 湖北税务登不上去是怎么了
  • 财务顾问属于什么业务
  • 新疆都有哪些地貌
  • 税务机关支部活动方案
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设