css隔离方案:shadow-dom
前言
约定项目前缀(既然是约定,肯定会有不遵守)
css-modules 打包时生成不冲突的选择器名
shadom dom 处理父子应用真正意义上的隔离
一、shadow dom
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<p>hello world</p>
<div id="shadow"></div>
</div>
<script>
let shadowDOM = document.getElementById('shadow').attachShadow({mode:'closed'})
let pElm = document.createElement('p')
pElm.innerHTML = 'hello china'
let styleElm = document.createElement('style')
styleElm.textContent = `p{color:red}`
shadowDOM.appendChild(styleElm)
shadowDOM.appendChild(pElm)
</script>
</body>
</html>
给shadow dom 节点中的p标签添加样式不影响 影子节点外的p标签的样式
二、mdn
总结
single-spa 以及微qiankun, 可以实现css真正意义上的隔离