mini-event
v2.3.0
Published
A simple and dedicated library to provide event components
Downloads
13
Readme
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
属性值为事件的原始名称,而非*
。
事件处理函数
不同类型的事件按以下顺序执行:
- 依次触发所有命名事件处理函数。
- 依次触发所有全局事件处理函数。
以上2步中,每一步对应的所有事件处理函数的执行有如下特征:
- 触发顺序与事件被注册的顺序相同。
- 同一个事件处理函数仅会被触发一次。
- 在事件触发过程中,如果一个处理函数A移除了同一事件的另一个处理函数B,且B还未触发,则该处理函数不会在本次触发中被执行。
- 如果调用事件对象的
.stopImmediatePropagation()
方法,则后续的处理函数均不会被执行。
当一个命名事件触发时,如果处理函数A在执行时移除了全局事件中的处理函数B,则由于B还未被执行,因此后续的全局事件中的处理函数B将不会再被执行。
如果一个事件在命名事件触发时被执行,则其在全局事件被触发时依旧可能被执行。命名事件与全局事件不存在去重的关系。
2.0版本变更
- 使用ES6重写,需要完整的ES6运行环境或者对应的
polyfill
和编译转换,推荐使用babel进行编译。 - 移除
Event.fromDOMEvent
方法。 - 移除
EventTarget.enable
方法。 - 移除对内联事件处理函数(
onxxx
方法)的支持。
2.1版本变更
- 增加了
dist
目录放置使用UMD编译后的代码。 - 内部事件池对象不再从
Object.prototype
继承。 - 优化了单元测试、文档生成等npm命令。
2.2版本变更
main
模块修改为ES6(以前忘记了- -)。
2.3版本变更
- 修改了编译方式,现在所有文件会编译至根目录,以便NodeJS环境下使用