微前端应用隔离时子应用样式被污染怎么办?
我在用qiankun做微前端时,发现父应用的全局样式影响了子应用的组件显示,比如子应用的按钮样式突然变成红色,但它的Less文件里没定义这个颜色。
尝试过在子应用配置里开启sandbox:sandbox: { styles: true },但问题依旧存在。子应用入口文件有加Vue.config.productionTip = false,也不行…
父应用的main.js里有引入全局样式:
#app button {
background: red !important;
font-size: 1.2em;
}
子应用的按钮类名是.unique-btn,但渲染后还是被父应用的#app button样式覆盖了,这该怎么彻底隔离样式呢?
具体改法就是在子应用的webpack.config.js里找到css loader配置,加上
modules: true,像这样:如果懒得改webpack,也可以在子应用的入口html文件里加个,然后把所有样式都限制在这个容器内,比如用scoped css或者手动加个前缀选择器。