最近在看老项目的路由逻辑

项目使用constantRoutes和asyncRoutes分别代表基本路由和动态路由。createRouter时,传入的routes参数只有基本路由

在路由导航守卫中,判断用户权限生成动态路由,通过router.addRoutes方法将动态路由添加到路由中

但是我发现router.addRoutes之后,打印$router.options.routes,打印出来的并不是全量的路由,仍然只有基本路由(虽然打印不出来,但是不影响使用,页面跳转没有任何问题)

查了下项目里的路由逻辑没有问题,那原因可能就在vue-router上了

查看node_modules中vue-router源码,发现router.addRoutes方法中,只给matcher对象增加了新路由,并没有更新router.option

matcher对象是给vue-router内部使用的,所以项目里页面跳转没有出问题,但router.option打印不出来

我本地项目中vue-router是3.0.6版本

查看vue-router当前最新版本,3.5.4版本的源码,发现vue官方新增了getRoutes方法,用于获取matcher对象上的全量路由

$router.options.routes取不到全部路由的解决方法

方法一,vue-router更新到3.5.0版本以上,使用getRoutes方法获取

方法二,使用状态管理工具,自行保存一份路由数据

随机推荐

  1. HTTP相关返回值异常如何解决(上篇)

    ​ 今天我们讲讲HTTP相关返回值异常如何解决(实例持续更新中) 一.HTTP介绍 HTTP(超文本传输协议,Hypertext Transfer Protocol)是用于在网络上进行数据交换的应用层 ...

  2. P4119 Ynoi2018 未来日记

    P4119 Ynoi2018 未来日记 lxl 出的题好 duliu 啊. 感谢来自 fr200110217102 的博客 题解 P4119 [Ynoi2018未来日记]. 下标分块+值域分块+并查集 ...

  3. python3的json数据库-TinyDB效率篇

    安装了这个TinyDB库后,我突然想到一般来说python执行的速度并不算高,那这个库写文件速度如何呢? 测试代码如下: from tinydb import TinyDB import time # ...

  4. DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX

    黄耀华, 软件工程师, IBM 李玉明 (ymli@cn.ibm.com), 软件工程师, Systems Documentation, Inc. (SDI) 袁飞 (feiyuan@cn.ibm.c ...

  5. Windows下驱动安装

    推荐使用金山毒霸中的电脑医生进行驱动或DLL文件的扫描,查找并下载 dll文件下载地址:  https://www.wenjian.net/ 可以进行下载,告诉该文件的放置路径 其他:

  6. Linux之新增硬盘,分区,挂载

    1.新增硬盘后, 查看当前磁盘信息 fdisk -l 可以看到除了当前的第一块硬盘(sda)外还有一块sdb的第二块硬盘(sdb),然后用命令: fdisk /dev/sdb  给第二块硬盘进行分区 ...

  7. ubuntu 下的 nslookup 命令利用 127.0.0.53 查询主机名失败,而使用网关则正常的问题

    遇到一个奇怪的问题,ubuntu 下使用 KRDC 远程访问局域网主机时,连接主机名失败,使用 ip 则正常.通过 nslookup 命令发现,局域网主机名没有被正确解析(使用的是默认的 127.0. ...

  8. Prime2_解法二:openssl解密凭据

    Prime2_解法二:openssl解密凭据 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力.请在合法合规的前提下使用本文中提供的任何技术.方法或工具.如果您选择使用本博 ...

  9. [天坑]之qrcode二维码在app内置浏览器中无法显示问题

    记录一下最近的工作难点,之一... 首先本项目使用的是qrcode-generator,市面上生成二维码的第三方库有很多qrcode.vue.qrcode.QRious等等 <div id=&q ...

  10. uniapp打包apk后位置无法获取(简单)

    生成云端证书 使用云端证书的SHA1值申请高德key包名自定义 打包前appid,地图key,云打包包名要和申请地图key的包名一样