micro-zoe / micro-app

A simple, efficient and powerful micro front-end framework. 一款简约、高效、功能强大的微前端框架
https://micro-zoe.github.io/micro-app/
MIT License
5.61k stars 570 forks source link

最新版本中浏览器后退,发生了路径错误的情况 #800

Closed wangjiecamen closed 1 year ago

wangjiecamen commented 1 year ago

问题描述

主应用和子应用用的都是vue3+vite,处于路径的美观性,我们不使用虚拟路由系统,因此'disable-memory-router'设置成了true。 通过在主应用中监听route.params,传递路径地址到子应用中,并在子应用中通过router进行跳转。首次进入应用时,在子应用中进行内部路由跳转后,进行浏览器后退,发现后退的地址并不是原先的地址。估计是history对象中做了劫持。

复现步骤

如上所属

上传截图

image

复现仓库

初始路径

https://github.com/wangjiecamen/micro-app-demo.git 点击前往b页面按钮

image

点击浏览器后退按钮

image

环境信息

bailicangdu commented 1 year ago

关闭虚拟路由,主、子都是vue-router4则会冲突,暂时不能关闭

wangjiecamen commented 1 year ago

关闭虚拟路由,主、子都是vue-router4则会冲突,暂时不能关闭

感谢回复,期待以后的优化

hi-asan commented 1 year ago

这个问题现在有解决办法吗,现在从子应用跳转其他地方后,点击回来,所有的资源都404了

jiaozhiye commented 1 year ago

主子应用都是 React 技术栈,也有点击浏览器前进后退就出问题的现象,micro-app版本: "1.0.0-beta.4"

bailicangdu commented 1 year ago

主子应用都是 React 技术栈,也有点击浏览器前进后退就出问题的现象,micro-app版本: "1.0.0-beta.4"

react不应该出现问题,应该是你的配置有问题

wangjiecamen commented 1 year ago

关闭虚拟路由,主、子都是vue-router4则会冲突,暂时不能关闭

你好,我这边还有个问题,当在子应用里面内部跳转时,如何保持主应用的路径和子应用里的路径一致,如下图:

image

我希望跳转后浏览器地址的结果是http://localhost:5173/micro/product/a?product=%2Fmicro%2Fproduct%2Fa,即主应用和子应用路由信息保持一致。 我在主应用的main.js中使用microApp.router.attachAllToURL({ includeHiddenApp: true })同步路由信息好像不起作用。 然后我在子应用中控制主应用路由跳转,虽然结果是正确的,但浏览器后退后,又会出现不同步的问题

image

此时点击按钮再也跳转不了了

bailicangdu commented 1 year ago

如果你想保持子应用和基座的路由一致,需要关闭虚拟路由,配置baseroute

wangjiecamen commented 1 year ago

如果你想保持子应用和基座的路由一致,需要关闭虚拟路由,配置baseroute

感谢回复,正如你之前所说的,关闭虚拟路由,主、子都是vue-router4则会冲突,暂时不能关闭。目前我修改了代码,在子应用中监听路径变化并跳转,由之前的push改成了replace,并在子应用中由先前的内部跳转改成通过控制主应用去跳转,我不知道会不会产生其他问题,但目前来说应该可行

zhangjin747 commented 8 months ago

关闭虚拟路由,主、子都是vue-router4则会冲突,暂时不能关闭

请问现在这个问题有比较好的解决办法了吗,或者开启虚拟路由有办法保持url的美观吗