mini-event

2.3.0 • Public • Published

mini-event

mini-event是一个简单的工具库,用于为任何系统提供事件相关的功能集,包括:

  • 统一的Event事件对象。
  • 事件的阻止默认行为(preventDefault)、停止冒泡(stopPropagation)、阻止后续处理(stopImmediatePropagation)功能。
  • 事件的注册、反注册等功能。

文档

cd {mini-event}
npm i -g esdoc
esdoc -c esdoc.json
open doc/index.html

事件类型

在mini-event模型中,事件共分为2类。

命名事件

命名事件是最普通的事件,指一个带有名字的事件。当使用.fire(eventName)方法触发事件时,其中的eventName指定事件名称,对应名称符合的命名事件将被触发。

全局事件

全局事件是名称为*的事件,当任何事件被触发时,全局事件均会被触发。

开发者不能直接触发全局事件,使用.fire('*')触发全局事件将会得到异常结果。

全局事件一定在命名事件均触发完毕后触发。

全局事件触发时,事件对象的type属性值为事件的原始名称,而非*

事件处理函数

不同类型的事件按以下顺序执行:

  1. 依次触发所有命名事件处理函数。
  2. 依次触发所有全局事件处理函数。

以上2步中,每一步对应的所有事件处理函数的执行有如下特征:

  1. 触发顺序与事件被注册的顺序相同。
  2. 同一个事件处理函数仅会被触发一次。
  3. 在事件触发过程中,如果一个处理函数A移除了同一事件的另一个处理函数B,且B还未触发,则该处理函数不会在本次触发中被执行。
  4. 如果调用事件对象的.stopImmediatePropagation()方法,则后续的处理函数均不会被执行。

当一个命名事件触发时,如果处理函数A在执行时移除了全局事件中的处理函数B,则由于B还未被执行,因此后续的全局事件中的处理函数B将不会再被执行。

如果一个事件在命名事件触发时被执行,则其在全局事件被触发时依旧可能被执行。命名事件与全局事件不存在去重的关系。

2.0版本变更

  1. 使用ES6重写,需要完整的ES6运行环境或者对应的polyfill和编译转换,推荐使用babel进行编译。
  2. 移除Event.fromDOMEvent方法。
  3. 移除EventTarget.enable方法。
  4. 移除对内联事件处理函数(onxxx方法)的支持。

2.1版本变更

  1. 增加了dist目录放置使用UMD编译后的代码。
  2. 内部事件池对象不再从Object.prototype继承。
  3. 优化了单元测试、文档生成等npm命令。

2.2版本变更

  1. main模块修改为ES6(以前忘记了- -)。

2.3版本变更

  • 修改了编译方式,现在所有文件会编译至根目录,以便NodeJS环境下使用

Readme

Keywords

none

Package Sidebar

Install

npm i mini-event

Weekly Downloads

1

Version

2.3.0

License

MIT

Last publish

Collaborators

  • feix760
  • otakustay