位置: 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)

  • 三大运营商指的是什么(三大运营商指的是什么数字啊)

    三大运营商指的是什么(三大运营商指的是什么数字啊)

  • 华为mate30pro为什么没有微距拍摄(华为mate30pro为什么会突然黑屏)

    华为mate30pro为什么没有微距拍摄(华为mate30pro为什么会突然黑屏)

  • 华为nova4和nova5i区别(华为nova4和nova5i手机壳一样吗)

    华为nova4和nova5i区别(华为nova4和nova5i手机壳一样吗)

  • 欧姆表测电阻原理(欧姆表测电阻原理ppt)

    欧姆表测电阻原理(欧姆表测电阻原理ppt)

  • 电脑照片怎么命名格式(电脑照片怎么命名jpg)

    电脑照片怎么命名格式(电脑照片怎么命名jpg)

  • 抖音怎么点赞直播(抖音怎么点赞主播直播)

    抖音怎么点赞直播(抖音怎么点赞主播直播)

  • 页脚怎么设置成每页不同(页脚怎么设置成第几页共几页)

    页脚怎么设置成每页不同(页脚怎么设置成第几页共几页)

  • 微信服务通知是干嘛的(微信里服务通知)

    微信服务通知是干嘛的(微信里服务通知)

  • ipad突然关机就开不起来了怎么办(ipad突然关机就开不了充电黑屏了)

    ipad突然关机就开不起来了怎么办(ipad突然关机就开不了充电黑屏了)

  • 用于测试两台计算机联通状况的命令是(要想测试两台计算机之间的报文传输路径)

    用于测试两台计算机联通状况的命令是(要想测试两台计算机之间的报文传输路径)

  • 承载系统lte打开收费吗(承载系统lte打开会提高网速吗)

    承载系统lte打开收费吗(承载系统lte打开会提高网速吗)

  • 淘宝有几次换货机会(淘宝换货一次后还能换货吗)

    淘宝有几次换货机会(淘宝换货一次后还能换货吗)

  • a1474是ipad第几代(a1474是第几代平板)

    a1474是ipad第几代(a1474是第几代平板)

  • 苹果7plus可以更新13.3系统吗(苹果7plus可以更新15.7.5吗)

    苹果7plus可以更新13.3系统吗(苹果7plus可以更新15.7.5吗)

  • 网易云音乐hd是什么意思(网易云音乐hd是苹果专用的吗)

    网易云音乐hd是什么意思(网易云音乐hd是苹果专用的吗)

  • 抖音黑屏字幕怎么弄(抖音黑屏字幕怎么做的竖着)

    抖音黑屏字幕怎么弄(抖音黑屏字幕怎么做的竖着)

  • 淘宝帮买消息怎么撤销(淘宝帮买消息怎么看)

    淘宝帮买消息怎么撤销(淘宝帮买消息怎么看)

  • 微信群太多怎么全部退出(微信群太多怎么折叠)

    微信群太多怎么全部退出(微信群太多怎么折叠)

  • 华为mate30pro是不是5g(华为的mate 30 pro)

    华为mate30pro是不是5g(华为的mate 30 pro)

  • 手机怎么看图片大小(手机怎么看图片比例)

    手机怎么看图片大小(手机怎么看图片比例)

  • 苹果xr有256g吗(iphone xr有256的吗)

    苹果xr有256g吗(iphone xr有256的吗)

  • 触宝电话怎么关闭广告(触宝电话怎么设置来电秀)

    触宝电话怎么关闭广告(触宝电话怎么设置来电秀)

  • 快手点心有啥用(快手点心一个人能点多少)

    快手点心有啥用(快手点心一个人能点多少)

  • 盒马鲜生如何加盟(盒马鲜生如何加盟开分店)

    盒马鲜生如何加盟(盒马鲜生如何加盟开分店)

  • 请问在王者荣耀中铠怎么出装?(请问王者荣耀是谁发明的)

    请问在王者荣耀中铠怎么出装?(请问王者荣耀是谁发明的)

  • 录屏软件哪个好用?10个免费好用的「录屏软件」推荐(主播录屏软件哪个好)

    录屏软件哪个好用?10个免费好用的「录屏软件」推荐(主播录屏软件哪个好)

  • 二手车经纪公司和中介的区别
  • 进项税额转出时点
  • 交增值税及附加税怎么做账
  • 附加税已扣款还要季度申报吗
  • 如何开增值税专用发票视频
  • 税收分类编码不可用是什么原因
  • 采购货款属于什么会计科目
  • 建筑企业外地施工成立分公司吗
  • 企业重组失败会怎么样
  • 施工企业结算金额怎么算
  • 企业设备维修管理制度
  • 工程完成投资入什么科目核算与怎么写其会计分录?
  • 异地设立分公司可以独立核算吗
  • 增值税普通发票和专用发票有什么区别
  • 税务局减免的税金会计分录
  • 劳务分包可以开劳务费吗
  • 公司房租押金收不回来账务处理
  • 哪些人需缴纳个人所得税
  • 应收账款的差额计入哪里
  • 会计科目在建工程包括哪些
  • 新win10浏览器
  • 代开发票的弊端?
  • 其他应付款转营业外收入合法吗
  • 免征增值税的跨境服务
  • 404 not found意思详细介绍
  • thinkphp5数据库操作
  • 盈余公积转增资本会计科目
  • 财务管理中成本控制的原则
  • 百度飞桨paddle
  • input输入语句
  • vue-axios详细介绍
  • 嵌入式开关安装效果图
  • vue3环境搭建
  • 现金流量表填写说明
  • 出口退税会计分局
  • 非营利组织能否开社保账户
  • vue+elementui
  • 迭代器实现原理
  • 海洋cms有安卓版下载
  • 应收处理的两大内容是什么
  • 什么是符合资本化
  • 入伙退伙协议要盖章吗
  • 电脑访问另一台电脑访问权限
  • 企业需要购买两种保险吗
  • 应收账款和应付账款属于什么科目
  • 上市公司限制性股票个人所得税
  • 调整以前年度销项税额的分录
  • 个人打钱到公司账上违法吗
  • 代扣税是啥
  • 税前扣除的职工福利费怎么算
  • 车辆购置税的税目有哪些
  • 失业保险费返还怎么做账
  • 滞纳金的收取依据
  • 企业应该设置的账薄
  • 会计凭证中阿拉伯数字如何书写
  • sql server内存怎么设置合理
  • sql server怎么向表里添加数据
  • rsync如何同步隐藏文件和排除文件?rsync同步隐藏文件和排除文件的方法
  • win造字软件
  • w10英雄联盟老是崩溃
  • 在windows xp
  • rhel6安装
  • imapi.exe
  • centos哪个版本最好用2022
  • win8任务栏图标太大了
  • vim配置语法高亮
  • win8鼠标指针不见了
  • unity3D游戏开发
  • node 执行js
  • css中显示
  • 安卓api中文手册
  • Re: Latest Version: 3.7.9 (January 18th, 2015)
  • python制作爬虫教程
  • unity mesh编程
  • 电子原理图实例讲解
  • 五十八二
  • 湖南电子税务局官网登录入口首页
  • 教师资格证认定流程
  • 开电影院有哪些要求
  • 应交税金包含企业所得税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设