查看有关 ShadowDOM 的文章,它似乎是对 DocumentFragments 的增强。ShadowDOM 的真正好处是什么?CSS 特异性?我不能用 Fragments 做大致相同的事情吗?
我正在寻找每个功能的列表。例如,两者似乎都允许您在内存中和主渲染路径之外组装 dom 树。然而,ShadowDOM 似乎具有作用域 CSS 的额外好处。
在哪些情况下您会使用 ShadowDOM,而您只想使用 DocumentFragments?
更新
在我自己对此进行了更多研究之后,我发现这两种技术是完全正交的。
注意:由于问题已关闭,我无法自己回答。我最初将我的发现的细节放在下面的评论中,但我想更多的人会在这里查看文本。
Document Fragments是一个 Javascript/DOM 构建工具,用于在 DOM 之外创建非分层的节点集合(每个节点都可以是其他节点的父节点)。它们本质上是节点集合的包装器,一旦将片段附加到 DOM,它就会被放弃。DocumentFragments 允许您在同一级别收集多个节点,并将它们作为兄弟节点附加到另一个 DOM 节点。
Shadow Dom就是在更大的渲染 DOM 中隔离副作用。ShadowDom 允许您创建具有封装样式的沙盒可重用组件。当基于 ShadowDom 的组件添加到更大的 Web 应用程序时,其 CSS 样式不会泄漏到应用程序的其余部分,应用程序自身的样式也不会影响组件的呈现。
请注意,CSS 组合器(例如/deep/
和::shadow
)用于样式化(和选择)来自父 dom 的 shadowDom 组件,但这些组合器在不久的将来会被弃用。因此,建议使用 ShadowDOM 的可重用组件依赖 CSS 变量进行样式设置,如果它们打算由使用它们的应用程序自定义。