Web Components 与组件间通信实战

· 约 7 分钟读完

Web Components 是一种利用浏览器提供的原生 Web 技术,如 Custom Elements、Shadow DOM 和 HTML Templates 等,实现模块化的组件化开发方案。组件化开发旨在提高前端开发效率和代码可维护性,而组件间通信则是组件化开发中不可或缺的一部分。

在本篇文章中,我们将介绍 Web Components 中常用的组件间通信方式及实战应用。

EventBus 事件总线

EventBus 是一种事件机制,将事件触发者和事件监听者解耦。每个组件都可以触发事件,其他组件可以监听该事件并进行响应。

EventBus 实现

以下是一个简单的 EventBus 实现。

EventBus 实战

我们假设有两个组件:<parent-component> 和 <child-component>,分别代表父子组件。当 <parent-component> 组件中的按钮被点击时,需要在 <child-component> 组件中显示对应的人名。

那么,我们可以通过 EventBus 实现组件间通信,具体步骤如下:

  1. 在 <parent-component> 中,绑定按钮点击事件,并触发 showName 事件。

  2. 在 <child-component> 中,监听 showName 事件,并显示对应的人名。

Props 属性传递

Props 是把父组件中数据传递给子组件的一种方式。子组件通过 props 访问父组件传递的数据。可以理解为在 Vue 或 React 中组件传值的方式。

Props 实现

以下是一个简单的 Props 实现。

Props 实战

我们假设有两个组件:<parent-component> 和 <child-component>,分别代表父子组件。在 <parent-component> 中,有一个名为 name 的数据,需要传递给 <child-component> 并显示出来。

那么,我们可以通过 Props 实现组件间通信,具体步骤如下:

  1. 在 <parent-component> 中,设置 name 数据,并将其通过 props 传递给 <child-component>。

  2. 在 <child-component> 中,通过 props 获取 name 数据,并显示出来。

Pub/Sub 发布订阅模式

Pub/Sub 是一种消息机制,将发布者和订阅者解耦。每个组件都可以发布消息,其他组件可以订阅该消息并进行响应。

Pub/Sub 实现

以下是一个简单的 Pub/Sub 实现。

Pub/Sub 实战

我们假设有两个组件:<parent-component> 和 <child-component>,分别代表父子组件。当 <parent-component> 组件中的按钮被点击时,需要在 <child-component> 组件中显示对应的人名。

那么,我们可以通过 Pub/Sub 实现组件间通信,具体步骤如下:

  1. 在 <parent-component> 中,绑定按钮点击事件,并发布 showName 消息。

  2. 在 <child-component> 中,订阅 showName 消息,并显示对应的人名。

Conclusion

以上就是 Web Components 中组件间通信的三种常用方式,分别是 EventBus、Props 和 Pub/Sub。在实际开发中,可以根据具体场景选择不同的方式,或结合多种方式来实现组件间通信。通过组件间通信,可以实现功能的拆分,提高代码的可维护性和重用性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67cf9ceee46428fe9eb4381c