我的GitHub
0%

无星的微前端之旅(五)——qiankun遇到的一些坑

Vue3的router问题

其实严格来说,这不是qiankun的问题,是vue-router4.x的问题。

解决方案:history模式使用window.history跳转,hash模式主应用添加hashchange事件发送

详情见issues1280

旧的jq项目改造,发现属性和方法丢失

子应用包含多个script,其中有些是公共方法,其他js使用的时候提示找不到方法

解决方案:需要显式挂载到window

详情见issues1272

qiankun添加的div撑不满外部盒子

使用css选择器为qiankun添加的div加样式

1
2
3
4
5
6
#sub-apps {
height: 100%;
>div:first-child {
height: 100%;
}
}

hash模式下无法激活子应用

添加方法getActiveRule

1
const getActiveRule = (hash) => (location) => location.hash.startsWith(hash);

子应用的接口devServer代理不生效

这是合理的,因为所有js代码都会被主应用加载并通过eval执行,所以代理是不生效的,实际上会走主应用中devServer的代理。

那么能不能让各自走各自的devServer代理呢,答案是能。(要命了,我记得我看到过有一篇文章给了解决方案,但我忘记是哪一篇了。刚刚找了一圈没找到TAT)

我是阿星,阿星的阿,阿星的星!