# mini-event **Repository Path**: mirrors_ecomfe/mini-event ## Basic Information - **Project Name**: mini-event - **Description**: A simple and dedicated library to provide event related components - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-08 - **Last Updated**: 2026-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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`属性值为事件的原始名称,而非`*`。 ## 事件处理函数 不同类型的事件按以下顺序执行: 1. 依次触发所有命名事件处理函数。 2. 依次触发所有全局事件处理函数。 以上2步中,每一步对应的所有事件处理函数的执行有如下特征: 1. 触发顺序与事件被注册的顺序相同。 2. 同一个事件处理函数仅会被触发一次。 3. 在事件触发过程中,如果一个处理函数A移除了同一事件的另一个处理函数B,且B还未触发,则该处理函数不会在本次触发中被执行。 3. 如果调用事件对象的`.stopImmediatePropagation()`方法,则后续的处理函数均不会被执行。 当一个命名事件触发时,如果处理函数A在执行时移除了全局事件中的处理函数B,则由于B还未被执行,因此后续的全局事件中的处理函数B将不会再被执行。 如果一个事件在命名事件触发时被执行,则其在全局事件被触发时依旧可能被执行。命名事件与全局事件不存在去重的关系。 ## 2.0版本变更 1. 使用ES6重写,需要完整的ES6运行环境或者对应的`polyfill`和编译转换,推荐使用[babel](http://babeljs.io/)进行编译。 2. 移除`Event.fromDOMEvent`方法。 3. 移除`EventTarget.enable`方法。 4. 移除对内联事件处理函数(`onxxx`方法)的支持。 ## 2.1版本变更 1. 增加了`dist`目录放置使用UMD编译后的代码。 2. 内部事件池对象不再从`Object.prototype`继承。 3. 优化了单元测试、文档生成等npm命令。 ## 2.2版本变更 1. `main`模块修改为ES6(以前忘记了- -)。