上篇文章我们介绍了 Web Components 的基本概念,本文将通过实现一个 Button 组件来进一步了解 Web Components。
我们要实现的 Button 组件会包含以下特性特性:
- Button 的 type:
default
、primary
、danger
- Button 的 size:
small
、medium
、large
click
事件
项目初始化
首先,我们需要初始化一个项目,我选择了使用 Vite:
根据提示选择 vanilla
模板,然后安装依赖:
打开项目,把不需要的文件清理掉,代码文件只留下 index.html
和 main.js
。
根目录新建 src/components
目录,创建一个 Button.js
文件:
在 Button.js
中先实现一个基本的 Button 组件:
在 main.js
中引入 Button
组件:
在 index.html
文件,使用 my-button
组件:
运行项目:
打开浏览器访问 http://localhost:5173
,应该可以看到一个按钮。
这样我们的项目初始化就完成了,接下来我们将实现 Button 组件的属性和事件。
我们要实现的 Button,具有 type
和 size
两个属性,用来设置 Button 的样式。
要添加一些属性,分为以下几个步骤:
- 添加
static get observedAttributes()
方法,用于监听 type
和 size
属性的变化
- 添加
connectedCallback
和 attributeChangedCallback
方法,当属性变化时重新渲染 Button
- 添加对应状态的样式
下面是完整的代码:
在 index.html
中使用:
这样我们的 Button 组件就实现了属性的设置。
要添加一个 click
事件并暴露给外部,可以在 connectedCallback
方法中添加事件监听器,并在 disconnectedCallback
方法中移除事件监听器。
dispatchEvent
方法用于在当前元素上分发一个事件。这个方法会触发事件监听器,并执行与事件相关的回调函数。
new CustomEvent()
构造函数创建一个新的事件对象,可以传递一些参数,比如事件名称、事件参数等。
在 index.html
中监听 button-click
事件:
点击 Button,控制台会输出 Button clicked!
。
总结
通过实现一个 Button 组件,我们了解了 Web Components 的基本概念和使用方法。Web Components 是一种用于构建可重用组件的技术,它提供了一种标准化的方式来创建自定义元素,使得我们可以在不同的框架和库中使用这些组件。