Web Components初探

组件化,标签语义化,是前端发展的趋势。现在流行的组件化框架有React、Vue等,标签语义化在H5中添加的article、dialog等。
Web Components 就是类似的一套技术,允许您创建可重用的定制元素,并且在您的web应用中使用它们。

Web Components由三项主要技术组成,它们可以一起使用来创建封装功能的定制元素,可以在你喜欢的任何地方重用,不必担心代码冲突。

  • **Custom elements(自定义元素):**一组JavaScript API,允许您定义custom elements及其行为,然后可以在您的用户界面中按照需要使用它们。
  • Shadow DOM(影子DOM):一组JavaScript API,用于将封装的“影子”DOM树附加到元素(与主文档DOM分开呈现)并控制其关联的功能。通过这种方式,您可以保持元素的功能私有,这样它们就可以被脚本化和样式化,而不用担心与文档的其他部分发生冲突。
  • HTML templates(HTML模板): <template><slot> 元素使您可以编写不在呈现页面中显示的标记模板。然后它们可以作为自定义元素结构的基础被多次重用。
实现web component的基本方法通常如下所示:
  1. 创建一个类或函数来指定web组件的功能,如果使用类,请使用 ECMAScript 2015 的类语法(参阅类获取更多信息)。
  2. 使用 CustomElementRegistry.define() 方法注册您的新自定义元素 ,并向其传递要定义的元素名称、指定元素功能的类、以及可选的其所继承自的元素。
  3. 如果需要的话,使用Element.attachShadow() 方法将一个shadow DOM附加到自定义元素上。使用通常的DOM方法向shadow DOM中添加子元素、事件监听器等等。
  4. 如果需要的话,使用 <template><slot> 定义一个HTML模板。再次使用常规DOM方法克隆模板并将其附加到您的shadow DOM中。
  5. 在页面任何您喜欢的位置使用自定义元素,就像使用常规HTML元素那样。

简单做一个显示文本的例子,感受以下Web Components代码如下:

main.js
class ShowText extends HTMLElement {
    constructor() {
        super()
    }

    connectedCallback() {
        const text = this.getAttribute('text');
        this.outerHTML = `<div style="color: red;">文本为: <label>${text}</label></div>`;

    }
}

customElements.define('show-text', ShowText);

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./main.js"></script>
</head>
<body>
    <show-text text="hello world"></show-text>
    <show-text text="你好"></show-text>
</body>
</html>

测试结果

接下来会一个知识点一个知识点慢慢梳理~
参考地址:https://developer.mozilla.org/zh-CN/docs/Web/Web_Components

如果文章能够对您有所帮助,我便感到十分荣幸。如若文章能被您点赞,那便是万分荣幸。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/493258.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cesium 创建实体

1、 entity 1.1 entity类型整理 Entity分类 1.2 entity添加 椭圆 const ellipse new Cesium.Entity({position: Cesium.Cartesian3.fromDegrees(114.3, 39.9, 100),ellipse: {semiMinorAxis: 30000, //椭圆的短半轴semiMajorAxis: 40000, //椭圆的长半轴extrudedHeight: 0…

如何使用Fiddler对手机进行弱网测试?(干货教程)

1.首先&#xff0c;fiddler连接手机 1)Tools->Options->Connections->设置端口8888&#xff0c;勾选Allow remote computers to connect 2)配置手机 注&#xff1a;手机和电脑需要在同一局域网下 手机进入网络详情&#xff0c;将代理改为手动 设置主机名、端口 主机…

Python中的变量与常量

变量&#xff1a;在程序运行过程中&#xff0c;值会发生变化的量&#xff0c; 常量&#xff1a;在程序运行过程中&#xff0c;值不会发生变化的量。 无论是变量还是常量&#xff0c;在创建时都会在内存中开辟一块空间&#xff0c;用于保存它的值。 Python 中的变量不需要声明…

基于yolo-world与mobile_sam实现类似lang-segment-anything

lang-segment-anything基于segment-anything 和 GroundingDINO 实现基于语言分割出任意对象&#xff0c;但是segment-anything 模型与GroundingDINO 都是运算量比较大的模型。而mobile_sam号称是sam的同等性能替代品&#xff0c;而yolo-world同样是号称比GroundingDINO 更快更准…

那如何解决信创设配问题呢?怎么成为信创产品?

信创也好、国产化也好都是国家部署的重点工作&#xff0c;所有涉及到的相关行业和部门都必须坚持执行和并且要执行好的重点任务&#xff0c;这一点无容置疑。在信息化层面&#xff0c;随着我国基础水平&#xff08;芯片、OS、DB、中间件&#xff09;的提升&#xff0c;信创工作…

vscode c++环境配置

1.基础软件安装 安装Visual Studio Code. 安装C拓展。点击在vscode界面最左侧的Extensions图标&#xff08;打开快捷键&#xff1a;ctrlshiftX&#xff09;&#xff0c;搜索“C/C”&#xff0c;点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下…

KingSCADA|如何实现文本显示设备的实时通讯状态?

哈喽,你好啊,我是雷工! 在SCADA项目中,有些要求在界面上实时显示SCADA系统与设备的实时通讯状态,来及时了解PLC或其他设备与SCADA系统的通讯状态是否正常,以及简单的通讯异常分析,在KingSCADA中该如何实现通讯状态的文本显示呢? 接下来用简单的样例介绍KingSCADA如何实…

整数的反转

给定一个整数&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零。 public class _01数字反转 {public static void main(String[] args) {Scanner input n…

IDEA的Scala环境搭建

目录 前言 Scala的概述 Scala环境的搭建 一、配置Windows的JAVA环境 二、配置Windows的Scala环境 编写一个Scala程序 前言 学习Scala最好先掌握Java基础及高级部分知识&#xff0c;文章正文中会提到Scala与Java的联系&#xff0c;简单来讲Scala好比是Java的加强版&#x…

基于 YAML 接口自动化测试框架设计

在设计自动化测试框架的时候&#xff0c;我们会经常将测试数据保存在外部的文件&#xff08;如Excel、YAML、CSV&#xff09;&#xff0c;或者数据库中&#xff0c;实现脚本与数据解耦&#xff0c;方便后期维护。目前非常多的自动化测试框架采用通过Excel或者YAML文件直接编写测…

LeetCode:2642. 设计可以求最短路径的图类(SPFA Java)

目录 2642. 设计可以求最短路径的图类 题目描述&#xff1a; 实现代码与解析&#xff1a; SPFA 原理思路&#xff1a; 2642. 设计可以求最短路径的图类 题目描述&#xff1a; 给你一个有 n 个节点的 有向带权 图&#xff0c;节点编号为 0 到 n - 1 。图中的初始边用数组 e…

20240320-1-梯度下降

梯度下降法面试题 1. 机器学习中为什么需要梯度下降 梯度下降的作用&#xff1a; 梯度下降是迭代法的一种&#xff0c;可以用于求解最小二乘问题。在求解损失函数的最小值时&#xff0c;可以通过梯度下降法来一步步的迭代求解&#xff0c;得到最小化的损失函数和模型参数值。…

一文读懂:什么是工单系统?市面上有哪些好用的工单系统?

什么是工单管理系统&#xff1f;工单系统如何帮助企业解决管理问题&#xff1f;市面上有哪些好用的工单管理系统&#xff1f;不同工单管理系统适用于什么企业&#xff1f;工单管理系统如何定价&#xff1f; 5000字长文&#xff0c;我写了整整一天&#xff01;梳理了大家对工单…

操作系统:初识文件

目录 1.初识文件 2.文件操作 2.1.文件操作接口 2.2.文件描述符fd 3.缓冲区 3.1.简要介绍 3.2.重定向 3.2.1.输出重定向 3.2.2.追加重定向 3.2.3.输入重定向 3.2.4.调用接口实现重定向 3.2.5.文件重定向的作用 3.3.用户缓冲区与内核缓冲区 3.4.缓冲区和重定向 我…

适合新手小白的wordpress详细安装教程

1、下载程序 到wordpress官方网站下载wordpress程序&#xff0c;官方下载地址&#xff1a;Download | WordPress.org China 简体中文。 下载最新版的wordpress程序 https://cn.wordpress.org/latest-zh_CN.zip 2、上传程序 上传程序前先确认主机是否符合安装的环境要求&…

小白必看从零开始学习,制作产品册技巧

作为初学者&#xff0c;我们往往缺乏相关经验和技巧&#xff0c;难以打造出令人眼前一亮的产品册。不过&#xff0c;别担心&#xff01;小编将为你揭示从零开始学习制作产品册的秘诀&#xff0c;让你轻松掌握技巧&#xff0c;成为产品册制作高手&#xff01; 一、明确目标&…

学成在线项目学习

技术栈 学成在线服务端基于Spring Boot构建&#xff0c;采用Spring Cloud微服务框架。 持久层&#xff1a;MySQL、MongoDB、Redis、ElasticSearch 数据访问层&#xff1a;使用Spring Data JPA 、Mybatis、Spring Data Mongodb等 业务层&#xff1a;Spring IOC、Aop事务控制、S…

外包干了5年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

LVGL线条和画布功能

线条部件 线条部件由多个点连接而成&#xff0c;它可用于修饰界面或者展示数据。 要注意这里的描述&#xff0c;线条是由多个点连接而成的。 线条部件只有一个组成部分&#xff1a;主体 LV_PART_MAIN 线条是由多个点连接而成的对象&#xff0c;用户可以使用 lv_point_t 类型的…

Day35 ● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

● 860.柠檬水找零 class Solution:def lemonadeChange(self, bills: List[int]) -> bool:fiveten0for bill in bills:if bill5:five1elif bill10:five-1ten1elif bill20 and ten!0:five-1ten-1else:five-3if five<0:return Falsereturn True ● 406.根据身高重建队列 cl…