/** * 统一的返回函数 - 解决 micro-app 栈不同步导致 404 的问题 * * 问题背景: * 1. 在 micro-app 环境中,Vue Router 的 router.back() 和浏览器的 history.back() 是独立的 * 2. micro-app 维护了一个虚拟栈来跟踪子应用的路由历史 * 3. 直接使用 router.back() 可能导致虚拟栈和浏览器 History 栈不同步 * 4. 栈不同步会导致返回后 URL 跳转到不存在的页面(404) * * 解决方案: * - 在 micro-app 环境中使用 microApp.router.back()(由框架维护栈一致性) * - 在独立运行环境中使用 Vue Router 的 router.back() */ import router from '@af-mobile-client-vue3/router' /** * 统一的返回函数 * - micro-app 环境使用 microApp.router.back() * - 独立环境使用 router.back() * - 无浏览器历史时跳转到首页 */ export function goBack(): void { if (window.history.length <= 1) { console.log('[goBack] 无浏览器历史,跳转首页') router.push('/') return } if ((window as any).__MICRO_APP_ENVIRONMENT__) { console.log('[goBack] micro-app 环境,使用 microApp.router.back()') ;(window as any).microApp?.router?.back() } else { console.log('[goBack] 独立环境,使用 router.back()') router.back() } }