Web 组件基础知识

2025-06-08

Web 组件基础知识

什么是 Web 组件?

Web 组件是指四种 Web 标准,它们帮助我们制作可在网页和应用程序中使用的自定义、可重用和封装的 HTML 标签。
1.<template>元素:使用<template>元素,我们封装 HTML,然后使用 JavaScript 呈现它。

所以,模板元素会将 HTML 拆分开来。模板标签内的内容不会在加载时渲染。相反,JavaScript 会在函数调用时渲染。因此,页面加载速度会非常快,因为 HTML 中有一部分内容不会在加载时加载。我们还可以重用这些元素,从而节省大量时间。
屏幕截图 2021-08-04 晚上 9.33.15屏幕截图 2021-08-04 晚上 9.33.32

2. 自定义元素:使用自定义元素,我们创建一个 javascript 类,然后将其链接到自定义 html 元素。

HTML 文档本身就包含默认的 HTML 元素,例如<body><header>。HTMLElement 类包含所有这些元素。我们在 JavaScript 文件中定义一个类,并使用该自定义类扩展 HTMLElement。接下来,我们定义一个自定义元素,并将其链接到我们的类。现在,我们可以在 HTML 中随意使用这个自定义元素。 请注意自定义元素中的 ;这在创建自定义元素时非常重要,因为它可以将其与默认元素区分开来。
屏幕截图 2021-08-04 下午 3.50.16屏幕截图 2021-08-04 下午 3.50.24
-

3. Shadow DOM:
使用 Shadow DOM 我们封装样式,以便将它们限制在特定区域内。

DOM,即文档对象模型,是文档元素(在我们这里指的是 HTML 元素)的树状结构。这里包含的代码和样式会相互影响。

dom-截图

另一方面,Shadow DOM 是一个独立的 DOM,其内部包含的代码与主 DOM 分离,因此它不会影响主 DOM 的代码。我们可以使用 JavaScript 将 Shadow DOM 附加到某个元素,它只会影响该元素。

屏幕截图 2021-08-05 上午 10.06.12

4. JavaScript 模块:
我们可以通过导出 JavaScript 文件将其转换为模块。这样其他文件就可以将其作为依赖项导入。

模块是一个导出自身代码的文件。模块通常有其自己的作用域。因此,我们可以拥有一个具有不同功能的模块,以便人们可以与他人共享。例如,我们可以共享一个名为 的模块mediaplayer,它可以播放媒体;或者另一个名为 的模块whattimeisit,它可以显示不同时区的时间。Npmjs 是一个流行的包管理器,人们用它来共享模块。
屏幕截图 2021-08-05 上午 10.53.42

为什么要使用 Web 组件?

面向未来:
许多框架的流行度急剧上升,但最终都被其他新框架所取代。Web Components 的优点在于,它的使用率多年来一直在增长。
趋势-次要RYVwr119hwQIps5UL0u4 复制

可在任何浏览器上运行:
Web 组件的另一个优点是,它们已被万维网联盟 (W3C) 添加为标准。W3C 定义了浏览器需要实现的标准。目前,五大主流浏览器均已添加对 Web 组件的支持。
哪些浏览器支持 Web 组件

可以与任何框架一起使用:
由于它是代码的一部分,可以由浏览器运行,因此任何框架的使用都不是问题。1*4cFhtuq6zRDqJ6p4s2pQ6g

编写更简洁的代码:
Web Components 的一大优点是,它能帮助我们编写更简洁、更优质的代码。这将提升性能、增强可访问性,并使其更易于维护。1*OW9_FTfEMmSWpMSSQtFhIQ

提高可重用性:
通过重用 Web 组件,您可以节省大量时间。这也意味着开发人员可以节省时间,从而大幅提高生产力。屏幕截图 2021-08-05 下午 2.42.46

提升一致性:
启动新项目时,可能会有一些旧组件可以复用。这样,在不同项目中,就能创建一致的外观和体验。提升可访问性: 通过复用旧组件,我们让用户在项目的不同部分更容易再次使用特定功能。1*SlAPqCmjtwvRsn0Kszi7oA

任何已实现的无障碍功能都可以被我们复用,或提供给其他人使用。例如,在 npmjs 上简单搜索“无障碍”就能找到超过 1350 个可用的软件包。屏幕截图 2021-08-05 下午 2.31.53

谁使用 Web 组件?

Github:
Github 使用 Web 组件。如前所述,元素-之间带有 表示它是自定义元素。例如include-frameworks,登录后 Github 主页上的 就是一个例子。屏幕截图 2021-08-05 下午 3.02.52屏幕截图 2021-08-05 下午 3.40.23

Salesforce:
Salesforce 也使用 Web 组件。自定义元素的示例可以dx-instrumentation在 Salesforce 的开发者页面中找到。屏幕截图 2021-08-05 下午 3.17.27 屏幕截图 2021-08-05 下午 3.41.04

EA:
EA 使用 Web 组件。以下是模拟人生网站使用 Web 组件的示例。它使用了 iron-a11y-announcer 自定义元素,该元素将 a11y 添加到需要屏幕阅读器按需播报的功能中。屏幕截图 2021-08-05 下午 3.35.28屏幕截图 2021-08-05 下午 3.41.32

了解更多链接:

您可以使用以下链接来了解有关 Web 组件的更多信息:

  1. 模板
  2. 自定义元素
  3. 影子 DOM

视频:

这是我解释 Web 组件的视频:
Youtube

鏂囩珷鏉ユ簮锛�https://dev.to/hamzasiddiq/boy-with-a-beard-explains-web-components-1jhm
PREV
6 本值得一读的 React 书籍 入门书籍 高级项目书籍
NEXT
GitLab 加入了合法化歧视的行列。为什么没人谈论这件事?