首页 > web前端 > js教程 > 正文

什么是JavaScript的Web Components_自定义元素和Shadow DOM如何工作?

幻影之瞳
发布: 2025-12-15 04:17:17
原创
849人浏览过
Web Components 是浏览器原生支持的可复用自定义元素标准,核心含自定义元素(需含短横线命名、继承 HTMLElement)和 Shadow DOM(提供样式与结构隔离),二者协作实现真正封装。

什么是javascript的web components_自定义元素和shadow dom如何工作?

Web Components 是浏览器原生支持的一套技术标准,让开发者能创建可复用、封装良好的自定义 HTML 元素。它不是框架,也不依赖第三方库,核心包括三部分:自定义元素(Custom Elements)、Shadow DOM 和 HTML 模板(<template></template>)。其中自定义元素和 Shadow DOM 是最常用、最关键的两个模块。

自定义元素:用 JavaScript 定义新 HTML 标签

你可以像使用 <div> 或 <code><button></button> 一样,定义并使用自己的标签,比如 <my-card></my-card><date-picker></date-picker>。浏览器通过 customElements.define() 注册这个新元素,且标签名必须包含短横线(-),这是强制规范,防止与未来 HTML 标准冲突。

定义方式有两种:

  • 基于类的自定义元素:继承 HTMLElement,在构造函数中初始化,用 connectedCallback 响应元素被插入 DOM 的时机
  • 自治型(autonomous)元素:完全新建标签,不继承内置元素(如不继承 HTMLButtonElement
  • 定制内建元素(customized built-in elements):扩展原生元素(如 extends 'button'),需在 HTML 中用 is 属性调用,例如 <button is="fancy-button"></button>

Shadow DOM:为组件提供样式和结构的私有边界

Shadow DOM 是一段附加在某个元素上的“影子” DOM 树,它与主文档 DOM 隔离。这种隔离是真正的封装——外部 CSS 选不到 Shadow 内部的节点,内部样式也不会意外泄漏到全局,JS 也默认无法跨边界访问(除非显式设置 {mode: 'open'} 并通过 element.shadowRoot 访问)。

立即学习Java免费学习笔记(深入)”;

创建 Shadow DOM 很简单:

来画数字人直播
来画数字人直播

来画数字人自动化直播,无需请真人主播,即可实现24小时直播,无缝衔接各大直播平台。

来画数字人直播 57
查看详情 来画数字人直播
  • 在自定义元素的 constructorconnectedCallback 中调用 this.attachShadow({mode: 'open'})
  • 然后向 this.shadowRoot 插入 HTML 结构、样式或模板内容
  • mode: 'closed' 会彻底屏蔽外部 JS 访问,一般不推荐,调试困难

两者协作:一个最小可用的自定义卡片组件

下面是一个带 Shadow DOM 的 <my-card></my-card> 示例逻辑:

  • 注册 MyCard 类,继承 HTMLElement
  • constructor 中调用 attachShadow 创建 Shadow 根节点
  • connectedCallback 中向 shadowRoot 写入结构和 <style></style>,样式只作用于该组件内部
  • 支持通过 attributeChangedCallback 监听属性变化(如 title),实现响应式更新

这样写出来的 <my-card title="Hello"></my-card> 就是独立、可复用、无样式污染的组件。

基本上就这些。不需要构建工具,不依赖 React 或 Vue,纯浏览器能力。关键点在于:自定义元素负责“怎么用”,Shadow DOM 负责“怎么藏”。两者配合,才真正实现 Web 级别的组件化封装。

以上就是什么是JavaScript的Web Components_自定义元素和Shadow DOM如何工作?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号