主流方案:1)构建期加前缀——PostCSS 或 css-loader 给子应用选择器加命名空间,qiankun 的 experimentalStyleIsolation 类似 scoped,自动加 data-qiankun 属性选择器;2)Shadow DOM(strictStyleIsolation,无界默认)——浏览器原生强隔离;3)CSS Modules 或原子化 CSS 加前缀——从源头避免全局类名;4)运行时卸载——子应用卸载时移除其注入的 style 与 link。
取舍:属性选择器方案轻量但隔离不彻底,全局重置与挂 body 的弹窗样式仍会互相影响;Shadow DOM 最强但带来事件 retarget、弹层定位、第三方库适配成本;CSS Modules 最省心但要求子应用改造。易错点:组件库弹窗默认挂 body,需配置 getContainer 挂回子应用根节点;带 !important 的全局样式任何方案都拦不住。追问:与 BEM 等人工规范的对比、微前端下设计系统如何统一。