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

  • 苹果手机如何设置屏幕亮屏时间(苹果手机如何设置来电拦截功能)

    苹果手机如何设置屏幕亮屏时间(苹果手机如何设置来电拦截功能)

  • wps动画顺序怎么设置(wps动画顺序怎么设置随机)

    wps动画顺序怎么设置(wps动画顺序怎么设置随机)

  • 应用宝有ios版吗(应用宝有ios版本吗)

    应用宝有ios版吗(应用宝有ios版本吗)

  • ios13建议升级吗(ios13建议升ios14吗)

    ios13建议升级吗(ios13建议升ios14吗)

  • 微信群怎么踢人(自己建的微信群怎么踢人)

    微信群怎么踢人(自己建的微信群怎么踢人)

  • 腾讯会议录屏为什么没有声音(腾讯会议录屏为什么没有声音怎么办)

    腾讯会议录屏为什么没有声音(腾讯会议录屏为什么没有声音怎么办)

  • 小红书注销后显示什么(小红书注销后显示的名字)

    小红书注销后显示什么(小红书注销后显示的名字)

  • 微信不加好友也能点赞(微信不加好友也能拉黑)

    微信不加好友也能点赞(微信不加好友也能拉黑)

  • 千牛可以两个手机同时登录吗(千牛可以两个手机登一个账号信息可以同步吗)

    千牛可以两个手机同时登录吗(千牛可以两个手机登一个账号信息可以同步吗)

  • 苹果机怎么设置自己想要的铃声(苹果手机怎么设置锁屏壁纸)

    苹果机怎么设置自己想要的铃声(苹果手机怎么设置锁屏壁纸)

  • 京东支付关闭短信验证(怎么取消京东微信支付短信通知)

    京东支付关闭短信验证(怎么取消京东微信支付短信通知)

  • 华为nova6声音突然变小(华为nova6se手机声音突然变小)

    华为nova6声音突然变小(华为nova6se手机声音突然变小)

  • 为什么vagaa搜不到东西了(为什么搜不出来呀)

    为什么vagaa搜不到东西了(为什么搜不出来呀)

  • 华为mate30蓝牙连接不上汽车(华为mate30蓝牙连接不稳定)

    华为mate30蓝牙连接不上汽车(华为mate30蓝牙连接不稳定)

  • numlock键在哪(联想小新的numlock键在哪)

    numlock键在哪(联想小新的numlock键在哪)

  • 微信付款码多久失效(微信付款码多久更新)

    微信付款码多久失效(微信付款码多久更新)

  • qq邮箱忘记密码了怎样找回密码(qq邮箱忘记密码手机号也换了)

    qq邮箱忘记密码了怎样找回密码(qq邮箱忘记密码手机号也换了)

  • 电脑怎么下载音乐到u盘(电脑怎么下载音乐到内存卡)

    电脑怎么下载音乐到u盘(电脑怎么下载音乐到内存卡)

  • ipone怎么限制热点(iphone怎么限制热点流量控制)

    ipone怎么限制热点(iphone怎么限制热点流量控制)

  • word如何关闭兼容模式(word怎么关闭兼容性模式)

    word如何关闭兼容模式(word怎么关闭兼容性模式)

  • 苹果x面容坏了影响大吗(苹果x面容坏了影响使用吗)

    苹果x面容坏了影响大吗(苹果x面容坏了影响使用吗)

  • 淘宝直播号怎么换头像(淘宝直播号怎么样可以养起来)

    淘宝直播号怎么换头像(淘宝直播号怎么样可以养起来)

  • 海伦wl122和wl125差距(海伦120k和wl122)

    海伦wl122和wl125差距(海伦120k和wl122)

  • 天猫精灵如何连接小米电视(天猫精灵如何连接电视)

    天猫精灵如何连接小米电视(天猫精灵如何连接电视)

  • 8p能不能无线充电(8p可以用无线充电器吗?)

    8p能不能无线充电(8p可以用无线充电器吗?)

  • uniapp适配问题(uniapp怎么做适配)

    uniapp适配问题(uniapp怎么做适配)

  • 税务申报系统没有印花税
  • 海关完税价格计算公式
  • 运输行业一般纳税人税率
  • 税负怎么计算
  • 销项税额和进项税额发票怎么区别
  • 坏账准备应计入
  • 工程招标费计入什么科目
  • 小规模季超30万,蔬菜还免增值税吗
  • 借贷记账法试算平衡的计算公式有
  • 递延所得税当期所得税费用
  • 财务收入支出明细表模板
  • 计提工资后发放时结转到什么科目
  • 分期缴纳土地出让金的契税
  • 双薪制工资如何缴纳个人所得税?
  • 建筑企业财务制度及规范流程
  • 外地派人来出差怎么报备
  • 验资报告办理一般需要多久时间
  • win11 zen2
  • 进货的运费怎么计算
  • 公司实缴资本有什么风险
  • 微信聊天记录备份和恢复
  • php文本转数字
  • 键盘突然打不出来字
  • php语言设计模式之单例模式
  • 销售旧的固定资产 税法规定
  • 收到职称评审费怎么做账
  • 建筑企业结转成本的依据是什么
  • php和mysql关系
  • 生成stl基本过程
  • vue鼠标悬浮菜单
  • ps怎么用魔棒选区
  • 核销已计提坏账的应收账款
  • 一般纳税人公司注册需要几个人
  • 教育局是一般纳税人吗
  • 累计预扣法计算并预扣预缴税款
  • react 16新特性
  • 企业增值税专用发票抵扣流程
  • 企业哪些增值税免征
  • sqlserver2012完全卸载
  • 物业代收代缴是什么意思
  • 会计电算化的内容和任务
  • php mysql教程
  • 应收账款在贷方为负数表示什么
  • 办公装修费用多少
  • 购买办公用品属于什么凭证类型
  • 提供维修业务的税率是多少
  • 现金比率升高
  • 欠供应商货款会坐牢吗
  • 项目前期的研发费用
  • 一般纳税人内外账
  • 运输费计入什么科目里面
  • 销项负数发票如何勾选
  • 办公家具可以一次性抵扣吗?
  • 无需缴纳的税费是什么
  • 公司购买手表入什么科目
  • 专家评审费需要上税吗
  • 银行对账单怎么打印
  • 建立明细账科目怎么排顺序
  • sql server如何查询
  • 繁体系统安装简体软件
  • 强化廉洁意识 筑牢思想防线
  • rundll32.exe是什么程序
  • xp桌面字体有阴影怎么去掉
  • bzc.exe是什么
  • win8.1怎么样?
  • windows的服务怎么打开
  • xp清理系统的命令
  • Windows XP Vista 2006 简体中文版下载
  • win7系统计算机管理在哪里
  • jquery对动态生成的进行操作
  • node session
  • android studio unity3d
  • Linux CentOS系统下安装node.js与express的方法
  • 安卓开发viewpager的用法
  • shell嵌套for循环
  • javascript高级程序设计pdf下载
  • 生猪屠宰企业报价
  • 2018年小微企业所得税优惠政策
  • 汕头汕尾什么意思
  • 纪检组长如何监督党员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设