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

  • 重铬酸钾健康危害急救方式

    重铬酸钾健康危害急救方式

  • 关于APP 消息推送的七大知识点(app推送通知)

    关于APP 消息推送的七大知识点(app推送通知)

  • 微信怎么添加附近的人为好友(微信怎么添加附近)

    微信怎么添加附近的人为好友(微信怎么添加附近)

  • zip格式转rar格式(zip格式转换rar)

    zip格式转rar格式(zip格式转换rar)

  • 索尼8000g和8500g的区别(索尼8000和8500有何区别)

    索尼8000g和8500g的区别(索尼8000和8500有何区别)

  • 微信文件过期了怎么恢复(微信文件过期了怎么办才能恢复)

    微信文件过期了怎么恢复(微信文件过期了怎么办才能恢复)

  • 微信个人签名怎么写(微信个人签名怎么写吸引人)

    微信个人签名怎么写(微信个人签名怎么写吸引人)

  • 智能卡通信失败

    智能卡通信失败

  • 苹果xr能不能用5v2a的充电(苹果xr能不能用5w快充)

    苹果xr能不能用5v2a的充电(苹果xr能不能用5w快充)

  • windows的目录结构是什么结构(windows的目录结构采用的是)

    windows的目录结构是什么结构(windows的目录结构采用的是)

  • 拉黑并删除有什么后果(拉黑并删除有什么影响)

    拉黑并删除有什么后果(拉黑并删除有什么影响)

  • vivo后置摄像头模糊怎么办(vivo后置摄像头摔坏了怎么办)

    vivo后置摄像头模糊怎么办(vivo后置摄像头摔坏了怎么办)

  • y7000p风扇声音大如何解决(y7000p风扇声音大怎么调小)

    y7000p风扇声音大如何解决(y7000p风扇声音大怎么调小)

  • 京东专线海外配送要几天(京东专线海外订单查询)

    京东专线海外配送要几天(京东专线海外订单查询)

  • i12是苹果耳机吗(i12是苹果耳机吗?)

    i12是苹果耳机吗(i12是苹果耳机吗?)

  • 京东如何重新实名认证(京东怎么更换实名认证)

    京东如何重新实名认证(京东怎么更换实名认证)

  • 华为青春版10怎么连拍(华为青春版10怎么刷机)

    华为青春版10怎么连拍(华为青春版10怎么刷机)

  • 苹果xmax上网慢怎么解决(iphonex网络超级慢)

    苹果xmax上网慢怎么解决(iphonex网络超级慢)

  • 手机qq空间怎么删好友(手机qq空间怎么显示手机型号)

    手机qq空间怎么删好友(手机qq空间怎么显示手机型号)

  • 手机怎么设置陌生号码打不进来(手机怎么设置陌生来电)

    手机怎么设置陌生号码打不进来(手机怎么设置陌生来电)

  • 魅族16s怎么安装flash插件(魅族16s安装双卡)

    魅族16s怎么安装flash插件(魅族16s安装双卡)

  • 小米9pro公交卡怎么用(小米9公交卡怎么唤出)

    小米9pro公交卡怎么用(小米9公交卡怎么唤出)

  • 简述局域网的硬件组成(简述局域网的硬件功能)

    简述局域网的硬件组成(简述局域网的硬件功能)

  • 软件危机的主要表现(软件危机的主要原因)

    软件危机的主要表现(软件危机的主要原因)

  • 小米笔记本风扇噪音解决(小米笔记本风扇不转是什么原因)

    小米笔记本风扇噪音解决(小米笔记本风扇不转是什么原因)

  • win10无故c盘满了(win10系统电脑c盘莫名其妙爆满)

    win10无故c盘满了(win10系统电脑c盘莫名其妙爆满)

  • mac自带画图工具在哪里(macbookpro画图工具)

    mac自带画图工具在哪里(macbookpro画图工具)

  • 未按期纳税申报怎么处理
  • 纳税检查调整的销售额确认收入吗
  • 原材料的采购成本包括运费吗
  • 车辆购置税会计核算
  • 房地产企业所得税预计毛利率
  • 销售清单要装订吗
  • 其他债券投资有减值,为什么其他权益工具投资没有减值
  • 独立核算自负盈亏和统负盈亏怎么选
  • 工资结算汇总表会计科目
  • 残疾人一次性奖金
  • 汇票贴息入什么科目
  • 在途物资的会计凭证怎么做
  • 企业申请零申报需要什么条件
  • 车辆使用费怎么开票
  • 购买原材料无法取得发票如何做账
  • 公允价值变动损益在利润表哪里
  • 回扣费可以税前扣除吗?
  • 未在规定期限内发出追索通知
  • 企业所得税季报资产总额怎么填
  • 航天信息维护费280元会计分录
  • 一般纳税人增值税申报操作流程
  • 公司停产检修2天扣年假
  • 资产负债率是什么之比
  • 公司党支部的费用入账
  • 企业短期投资交增值税吗
  • 资产减值损失借方余额在利润表怎么填列
  • 支付短期借款利息
  • 以自有资金进行股权投资
  • 待处理财产损益期末结转到哪里
  • 冲销多计提个税怎么做账
  • 企业所得税怎么做帐
  • php sybase_fetch_array使用方法
  • service.exe是什么进程
  • excel多表操作法
  • 进货退回的会计处理
  • 购货方退货并已签收
  • 土地使用税缴纳人是使用者还是所有权人
  • php数组怎么定义
  • 会计财务报表的编制步骤
  • php封装数据库连接
  • 浅析Laravel5中队列的配置及使用
  • apt-show-versions
  • 投资收益的会计处理
  • 销售时的赠品怎么做账
  • php怎么修改当前用户的密码
  • 织梦的首页怎么换图片
  • 在建工程转入固定资产怎么做
  • 企业无票支出该怎么做账
  • 材料报废属于正常损失吗
  • 营业执照是如何年审的
  • 房地产销售老项目增值税
  • 小规模纳税人企业所得税征收标准
  • 政府补助如何会计核算
  • 捐赠支出税前扣除比例
  • 委托加工农产品的扣除率
  • 新建厂房房产证办理流程
  • 应缴纳房产税的房产
  • 残疾人就业保障金征收使用管理办法
  • 餐费发票报销需提供清单吗
  • 利润总额与应纳税所得额的差异国内动态
  • 工业企业营业税率
  • 非常详细的魔方公式图解
  • 一条的句子怎么写
  • ubuntu20.04.2
  • 注册表怎么优化
  • mac怎么安装字体到ai
  • win7安装ubuntu20.10
  • winxp系统界面图片
  • win7能装coreldraw2020吗
  • JQuery.Ajax()的data参数类型实例详解
  • linux shell脚本实例
  • Unity3D游戏开发毕业论文
  • python的条件语句有哪些关键字
  • jQuery Checkbox 全选 反选的简单实例
  • js实现聊天框
  • 扣缴义务人怎么改不过来呢
  • 佛山电子税务
  • 研发人员范围
  • 发货确认收入还是以开票确认收入
  • 在电脑上怎样做word的文档
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设