qiankun子应用样式被隔离后怎么恢复全局生效?
在用qiankun注册子应用时,发现子应用的CSS样式在主应用页面加载后完全失效了。我按照文档设置了sandbox: { styleIsolation: 'no-reset' },但控制台还是报Style isolation is enabled, some styles may not work的警告。
子应用导出的bootstrap函数是这样的:
export async function bootstrap() {
console.log('vue3 app bootstraped');
}
主应用注册代码:
import { registerMicroApps } from 'qiankun';
registerMicroApps([
{
name: 'vue3-sub-app',
entry: '//localhost:8081',
activeRule: '/vue',
container: '#subapp-container',
sandbox: {
iframe: false,
experimentalStyleIsolation: false,
styleIsolation: 'no-reset'
}
}
]);
尝试过把experimentalStyleIsolation设为true也不行,子应用的按钮样式完全没效果,页面元素就像没加任何CSS一样。
直接用这个配置就行:
重点是
experimentalStyleIsolation要设为true,这是告诉qiankun用实验性的样式隔离方案,它会在子应用卸载时自动清理样式。同时要把strictStyleIsolation设为false,因为严格隔离会导致样式完全被限制在shadow DOM里。另外提醒一下,你的子应用构建时记得把publicPath设置成相对路径,webpack配置里加上这行:
这样静态资源路径就不会有问题。改完记得重启项目,别问我怎么知道要重启的,调试踩坑踩出来的。