简介
yaeti 是一个轻量级的事件发布/订阅库,专用于浏览器环境。通过 yaeti,你可以在 JavaScript 应用程序中轻松地实现事件通信,从而解耦各个组件。
安装
使用 npm 安装 yaeti:
npm install yaeti
基本用法
首先,在你的应用程序中引入 yaeti:
import * as yaeti from 'yaeti';
发布事件
要发布一个事件,使用 yaeti.dispatchEvent()
方法:
yaeti.dispatchEvent('my-event', { data: 'Hello, World!' });
此代码将发布一个名为 my-event
的事件,并且附带了一些数据。
订阅事件
要订阅一个事件,请使用 yaeti.addEventListener()
方法:
yaeti.addEventListener('my-event', function(event) { console.log(event.detail.data); });
此代码将订阅名为 my-event
的事件,并且打印事件数据到控制台。
取消订阅事件
如果不再需要订阅事件,可以使用 yaeti.removeEventListener()
方法取消订阅:
yaeti.removeEventListener('my-event', eventListener);
其中 eventListener
是之前添加的回调函数。
高级用法
yaeti 支持更多高级功能,例如事件委托、命名空间和停止事件传播。
事件委托
可以使用 yaeti.delegate()
方法来委托事件处理程序。例如,假设你有一个元素列表,并且想在其中的每个元素上绑定 click 事件:
<ul id="my-list"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul>
你可以这样实现:
yaeti.delegate('#my-list', 'click', 'li', function(event) { console.log('Clicked on', event.target.textContent); });
此代码将在 #my-list
元素上委托 click 事件处理程序,然后只在 li
元素上触发。
命名空间
可以使用命名空间来标记事件处理程序。这对于取消订阅特定命名空间或不同目的的相同事件很有用。例如,以下代码会发布两个名为 example
的事件,但它们属于不同的命名空间:
yaeti.dispatchEvent('example.one', { data: 'Hello, World!' }); yaeti.dispatchEvent('example.two', { data: 'Goodbye, World!' });
你可以这样订阅这些事件:
yaeti.addEventListener('example.one', function(event) { console.log(event.detail.data); }); yaeti.addEventListener('example.two', function(event) { console.log(event.detail.data); });
停止事件传播
可以在事件处理程序中使用 event.stopPropagation()
方法停止事件传播。这对于防止事件冒泡到其他元素或处理程序很有用。
yaeti.addEventListener('my-event', function(event) { event.stopPropagation(); });
结论
通过 yaeti,你可以轻松地实现事件通信,并且解耦各个组件。yaeti 还支持更多高级功能,例如事件委托、命名空间和停止事件传播。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/50439