npm 包 emitter-domain 使用教程

阅读时长 5 分钟读完

背景

在前端开发中,我们经常需要实现事件的发布与订阅,这时候我们可以选择使用 eventEmitter 来实现。但是如果我们需要在多个域名间共享事件,该怎么办呢?这时候就需要使用 npm 包 emitter-domain 来实现了。

安装

在项目中安装 emitter-domain

然后在代码中引入:

使用

创建 EmitterDomain

使用 EmitterDomain 基础类来创建一个 emitterDomain 实例:

域名映射

使用 setDomainMap(domainMap) 方法设置域名映射,使不同域名的 emitter 可以被识别。

发布事件

使用 emitterDomain.emit(domain, eventName, arg1, arg2, ...) 方法发布一个事件:

订阅事件

使用 emitterDomain.on(domain, eventName, listener) 方法订阅一个事件:

取消订阅

使用 emitterDomain.offAll(domain, eventName) 方法取消某个域名下的所有事件的订阅:

示例

-- -------------------- ---- -------
----- ------------- - --------------------------

-- ---- ------- --
----- -------- - --- ----------
----- -------- - --- ----------

-- ----
----- --------- - -
  ---------------------- ---------
  ---------------------- --------
--

-- -- ------------- --
----- ------------- - --- ----------------
--------------------------------------

-- --- ------------------- -----
----------------------------------------- ----------- ------- --------

-- --- ------------------- -----
--------------------------------------- ----------- ------ ----- -- -
  ----------------- ------ -- -- ----- -----
---

-- --- ------------------- -----
----------------------------------------- ---------------- ------- --------

-- --- ------------------- ------ ------------------- ------
--------------------------------------- ----------- ------ ----- -- -
  ----------------- ------ -- ------- ------------------- ----- ------------------- ---- -------- --
---

-- ----- ------------------- -- -------- ----
------------------------------------------- ------------

总结

使用 emitter-domain 可以很方便地在不同域名下共享事件,同时也能够解决多个域名下相同事件名称的冲突问题。但是需要注意,不同域名下的 emitter 实例需要在对应的 domainMap 中进行映射,否则 emiton 方法会无法识别 emitter 实例。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e1ba563576b7b1ecc30

纠错
反馈