使用 Shadow DOM 有什么缺点?

What are the drawbacks of using Shadow DOM?

在教程中我只看到了 Shadow 的优点 DOM,但应该也有缺点。在哪些情况下我们应该避免使用 Shadow DOM?

呃,这个技术的规范还没有稳定下来,很多浏览器都不支持。我认为这是一个缺点。

参见:https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow

现在我会说;在大多数情况下避免,除非你想尝试新的东西并且它不适用于生产环境。

影子 DOM 功能既可以看作是缺点,也可以看作是优点:

样式隔离 如果你想要它是一个好处,但如果用户想要从全局 CSS样式表。

DOM 阴影 在某些情况下是一个好处,但如果外部 script/library 或扩展需要解析或 select内容。

有许多第 3 方库(或扩展)不能与 Shadow DOM 内容一起使用,因为它们不是为处理它而设计的,或者需要一些额外的配置才能与 Shadow DOM.

示例:

  • Wiris math editor integration

此外,解析 HTML 的扩展将在 Shadow DOM 边界处被阻止:如果您不想被窥探,这是一个好处,如果您认为它们是一项有用的服务,则是一个缺点。

事件传播 影子内外不同DOM。所以你在处理 UI 事件时可能会遇到一些困难。

示例:

  • TinyMCE integration

结论

  • 仅当您需要 CSS 风格或 DOM 隔离时才使用 Shadow DOM。

  • 如果您需要与一些不兼容的第三方组件或库进行交互,请不要使用 Shadow DOM。