Web 组件使用 shadow dom 进行样式封装。从规范中您知道 shadow root 内的样式是局部作用域的。当您多次实例化同一个 webcomponent 时,会对内存产生什么影响?例如:您将自定义按钮 Web 组件实例化 10 次。
例子
#Shadow-root
<style>
.outer {
border: 2px solid brown;
border-radius: 1em;
background: red;
font-size: 20pt;
width: 12em;
height: 7em;
text-align: center;
}
.inner {
color: white;
font-family: sans-serif;
padding: 0.5em;
}
.name {
color: black;
background: white;
font-family: "Marker Felt", cursive;
font-size: 45pt;
padding-top: 0.2em;
}
</style>
<div/>
我可能会导入 style.css 或像上面那样放置一些内联的东西。自定义元素可能有道具,并且基于道具,组件行为会不断变化。现在,如果这样的组件重复 50 次,那么我会看到内联样式也会重复 50 次。浏览器是否在实例之间进行任何优化?
如果样式被重复,那么 js 中的 css 不是比 shadow dom 更好的封装解决方案吗?你可以用一个不错的 jss 生成插件来优化整个 dom 中使用的 css。