修改注册子应用的activeRule
改成hash模式,比如 讲‘/workbench‘
改为‘#/workbench‘
import { registerMicroApps, start } from ‘qiankun‘;
export const useQiankun = () => {
registerMicroApps([
{
name: ‘workbenchApp‘,
entry: ‘//localhost:8080‘, //如果是编译后部署,则这里应该为编译后的子应用访问地址,比如‘./micro-workbench-dist/index.html‘
container: ‘#wk_container‘,
activeRule: ‘#/workbench‘, // 改成hash模式规则
}
]);
start(); // 启动 qiankun
}
子应用就需要硬编码,有损改造了。
给原来的路由加上模式改为hash && 前缀 && 跳转的时候动用全局路由首位辅助处理跳转
注意不要妄图使用base偷懒,亲测无效
let prefix = ‘‘;
if(window.__POWERED_BY_QIANKUN__){
prefix = ‘/workbench‘ // /workbench为主应用的activeRule
}
const routes: Array<RouteConfig> = [
{
path: prefix+‘/‘,
name: ‘home‘,
component: Home
},
{
path: prefix+‘/coordinate‘,
name: ‘coordinate‘,
component: Coordinate
}
]
const router = new VueRouter({
mode: ‘hash‘,
routes
});
// 这里主要是适配子应用的单独访问和继承访问
if(window.__POWERED_BY_QIANKUN__){
router.beforeEach((to, from, next) => {
if(!to.path.includes(‘/workbench‘)){ // /workbench为主应用的activeRule
next({path: prefix+to.path})
}else{next()}
})
}
这里注意,尽量主应用和子应用的路由模式保持一直
其中workbench是子应用
原文:https://www.cnblogs.com/dshvv/p/15019881.html