课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的web前端编程开发框架被组件化开发取代,下面我们就一起来了解一下这些web组件都有哪些类型。
自定义元素
自定义元素其实就是用户定义的HTML元素。它们是使用CustomElementRegistry定义的。要注册一个新元素时,需要通过window.customElements获取注册表实例并调用其define方法。
Web组件的公共API
除了这些生命周期方法之外,你还可以在元素上定义可以从外部调用的方法,目前在使用React或Angular等框架定义元素时是不可能做到这一点的。
ShadowDOM
使用ShadowDOM时,自定义元素的HTML和CSS会完全封装在组件内部。这意味着该元素将在文档的DOM树中显示为单个HTML标签,其内部HTML结构则放在一个#shadow-root中。
其实ShadowDOM也用在几个原生HTML元素上。例如当你的网页中有元素时,它会显示为单个标签;但它也会显示视频的播放控件,这个控件是不会显示在浏览器开发工具中的元素上的。
通过Slot组合
组合(Composition)是将ShadowDOM树与用户提供的标记组合在一起的过程。这是通过元素完成的,该元素本质上是ShadowDOM中的占位符,其中呈现用户提供的标记。用户提供的标记称为LightDOM。组合会将LightDOM和ShadowDOM组成一个新的DOM树。
使用JavaScript中的slot
你可以通过检查已分配给某个slot的节点、已分配给某个元素的slot以及slotchange事件来通过JavaScript与slot交互。
要找出哪些元素已分配给某个slot,可以调用slot.assignedNodes()。如果你还想检索任何后备内容,可以调用slot.assignedNodes({flatten:true})。
ShadowDOM中的事件
来自鼠标和键盘事件等自定义元素的标准事件默认会从ShadowDOM中弹出来。每当一个事件从ShadowDOM中的一个节点出来时,它将被重新定位,使得该事件看起来似乎是来自自定义元素本身。如果要查找事件实际来自ShadowDOM中的哪个元素,可以调用event.composedPath()来检索事件所经过的节点数组。但是,事件的target属性将始终指向自定义元素本身。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。