1 Star 0 Fork 0

郭斌勇 / event-bus

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

目录:


1. 背景

npm 上有很多事件总线的库,它们基本上都有以下特点 和 缺点:

  • 没有继承任何已有的类,都是重新实现的;(没有发挥 EventTarget 的功能)
  • 自己单独维护了事件和监听函数的映射关系;(多此一举,执行效率不高)
  • 监听事件 和 触发事件的方法与 Dom 中的 EventTarget 不一致。(增加学习成本)
  • 没有完善的类型提示:不能针对不同的事件提示更加精确的数据数据类型

其实 EventTarget 完全可以胜任事件总结的任务,window 也是一个较理想的事件总线实例。只是从理想的角度出发,他们还有以下小小的不足之处:

  • 缺乏更丰富的 和 便捷的 添加事件的 API,如: 一次性监听方法 onceListen() 等。
  • 没有事件类型提示:不能针对不同的事件提示更加精确的数据数据类型
  • 派发事件时,需要手动配置 Event 对象的某些属性,如:{bubbles: false,cancelable: true,composed: false}
  • window 上会经常触发很多不相关的事件,这会增加事件检索成本

鉴于以上原因,该库就诞生了。

2. 简介

event-bus 是基于原生 EventTarget 类来开发的事件总线,无依赖(零依赖),充分复用原生的能力增加了易用性。拥有极少的代码就实现了 EventBus 的核心功能,而且还具备精确且完善的 TypeScript 类型系统。

具有以下特性:

  • 基于 EventTarget 实现,拥有极少量的代码 和 极高的性能
  • 拥有丰富、易用的 API,如:一次性监听、指定次数的监听 等等
  • 派发事件时,自动配置 Event 相关属性为合适的值
  • 完善的类型系统,能自动根据事件名字来推导出 event 的类型

详情请看:

如果您在使用的过程中遇到了问题,或者有好的建议和想法,您都可以通过以下方式联系我,期待与您的交流:

3. 安装方式

目前,安装方式有以下几种:

3.1. 方式1:通过 npm 安装

npm install @gby/event-bus

3.2. 方式3:通过<script>标签引入

您可直接从项目的 发行地址 中下载以 .iife.js 作为后缀的文件,然后使用如下代码引用 和 使用 event-bus:

  1. 引用 event-bus

    <script src="path/to/package/event-bus.iife.js"></script>
  2. 使用全局的 EventBus

    <script>
    // 使用全局的 EventBus
        const eBus = new EventBus();
    </script>

4. 教程

详情跳转至教程

5. API接口文档

详情跳转至API接口文档

MIT License Copyright (c) 2020 郭斌勇 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

event-bus 是基于原生 EventTarget 类来开发的事件总线,无依赖(零依赖),充分复用原生的能力增加了易用性。拥有极少的代码就实现了 EventBus 的核心功能,而且还具备精确且完善的 TypeScript 类型系统。 展开 收起
JavaScript 等 2 种语言
MIT
取消

发行版 (4)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/guobinyong/event-bus.git
git@gitee.com:guobinyong/event-bus.git
guobinyong
event-bus
event-bus
main

搜索帮助