后台标题比较抽象。我先描述一下当时的场景。首先,我们的项目需要Vue多层嵌套路由,在router-view中使用,页面也会有router-view。另外页面级缓存我们需要使用keep-alive,两层router-view都要用到。每个router-view的代码风格如下遇到的问题加载一些叶子页面时,发现生命周期钩子被执行了两次,反复确认只有一个路由跳转(同一个路由不会跳转)多次执行)。经过排查,发现问题的根源在于在最外层的router-view中使用$routename和meta进行了判断,但是这个$route不符合预期。$route总是指向最外层的叶子节点路由,而我们在外层判断期望的是一级目录的路由,自然就会出现问题。注意即使改成VueRouter4支持的v-slot="{Component,route}"语法,这里的route还是有这个问题。解决这个问题最直接的方法就是把路由器的所有层都拉平,自然就不会有这个问题了。但这也太低了,改造成本也不低。我的方案是在outerrouter-view中判断得到的routelevel。如果不是一级目录,获取当前路由后使用。具体代码如下"getFirstLevelRoute(route).meta.keepAlive">getFirstLevelRoute(route){if(!Array.isArray(route.matched)||route.matched.length===0){返回路线;}returnroute.matched[0];}