【发布时间】:2019-04-17 14:00:52
【问题描述】:
我试图了解 Salesforce 如何实现他们的自定义闪电组件元素。我已经阅读了一些帮助文档,这些文档暗示它们遵循 webcomponents 标准。
所以这看起来像典型的 DOM 结构,但是当你进入控制台并查看闪电图标时,它说除非你进入影子 dom,否则没有子节点:
> document.querySelector('lightning-icon.slds-icon-standard-home').childNodes
> NodeList {Symbol(items): Array(0)}
> document.querySelector('lightning-icon.slds-icon-standard-home').shadowRoot.childNodes
> NodeList {0: lightning-primitive-icon, Symbol(items): Array(1)}
现在,通常如果有阴影根和文档片段,它在检查器中清晰可见为#shadow-root(打开)。根据此处的 Mozilla 示例:https://mdn.github.io/web-components-examples/popup-info-box-web-component/
我还注意到自定义元素不是注册的自定义元素。并且 SF 已经实现了自己的组件库等...
我想知道发生了什么?如果节点存储在那里,为什么不显示 #shadow-root 以及如何在普通 JS 中实现自定义元素,以便我可以重新创建。
谢谢!
【问题讨论】:
-
如果有页面可以去看看就好了。
-
它在 salesforce 应用程序中。而且我正在尝试学习如何重新创建它......所以我还不能创建一个有效地模仿他们的实现的示例。
标签: javascript html web-component shadow-dom salesforce-lightning