npm 包 @p4d/hermes 使用教程

在前端开发中,我们经常需要进行跨页面或跨应用程序的通信。为了解决这个问题,一些开发人员使用了 PostMessage,但是使用起来并不是十分直观和容易,特别是在处理多个消息时。为了使这一过程更加高效和直观,我们介绍一个开源的 js 库 — @p4d/hermes。

@p4d/hermes 简介

@p4d/hermes 是一个基于发布订阅模式的 js 库,用于在 Web 应用程序中发送和接收消息。它既可以用于同一页面内的通信,也可以用于跨页面或跨域应用程序之间的通信。

以下是 @p4d/hermes 的一些特点:

  • 简单易用:可以通过一些简单的 API 轻松安装、配置和使用
  • 可定制:可以使用自己的插件来进行扩展并自定义其行为
  • 独立:没有任何依赖关系,可以与各种框架和库一起使用
  • 多途径支持:支持 WebSocket,PostMessage 和 LocalStorage 等多种通信方式

安装和启动 @p4d/hermes

通过 npm 安装 @p4d/hermes:

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

然后可以将其导入你的代码中:

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

或者使用 require:

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

订阅和发布消息

使用 @p4d/hermes 只需几个简单的步骤。第一步是创建一个 Hermes 实例:

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

创建 Hermes 实例后,你可以使用 hermes.subscribe(eventName, callback) 订阅你感兴趣的事件:

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

当其他地方的代码发布一个名为 "login" 的事件时,该函数将被调用。为了发布消息,你可以使用 hermes.publish(eventName, payload)

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

此时,订阅 "login" 事件的回调将被调用,并在控制台上打印"User logged in"。payload 参数是一个可选参数,可以将任何数据传递到订阅者回调函数中。

取消订阅消息

有时你可能需要取消指定事件的订阅。为此,你可以使用 hermes.unsubscribe(eventName, callback)

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

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

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

以上代码将订阅或取消订阅了 "login" 事件。

其他功能

多个 Handler

可以让多个处理程序处理同一个事件。这些处理程序将按照它们被添加到队列中的顺序依次执行。

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

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

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

输出结果将是:

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

跨框架通信

@p4d/hermes 可以用于在跨框架(跨域)应用程序之间传递消息。对于这种情况,你需要设置 target 参数:

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

自定义监听器

你可以轻松地自定义监听器并使用自己的选择器。你只需要实现 HermesBaseListener 接口中的方法并传递选项:

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

接下来,你就可以使用新选择器:

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

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

以上代码将使用自定义选择器进行跨框架通信。

示例代码

完整示例代码:

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

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

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

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

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

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

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

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

总结

通过使用 @p4d/hermes,你可以轻松地添加跨页面、跨应用程序或跨域通信功能,而无需使用庞大的方案或语法冗长的 PostMessage API。由于 @p4d/hermes 是一个轻量级库并且没有任何依赖项,因此你可以在任何项目中使用它。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005593781e8991b448d6a65


猜你喜欢

  • npm 包 ng4-resti 使用教程

    ng4-resti 是一个用于 Angular 4+ 的 RESTful API 服务组件,它提供了一组极其强大的 API 配置和操作方法,帮助我们更加简化和优化 RESTful API 的调用和操作...

    2 年前
  • npm 包 ember-redux-offline-shim 使用教程

    在现代的 Web 开发中,前端框架和国际化、离线功能等都是必备的技术。其中,框架的选择和使用非常关键,越来越多的 Web 开发者倾向于使用 React 和 Redux 这样的 Web 应用程序框架。

    2 年前
  • npm 包 ember-redux-persist-shim 使用教程

    什么是 ember-redux-persist-shim? ember-redux-persist-shim 是一个小型的 npm 包,它提供了一些简单但强大的工具,能够让您在 Ember.js 应用...

    2 年前
  • npm 包 input-autocomplete 使用教程

    在前端开发工作中,输入自动完成功能是非常常见的需求,相信大家都会用到类似的功能。而为了方便开发者们实现输入自动完成功能,npm 社区有许多相应的工具包,如 input-autocomplete。

    2 年前
  • npm 包 newque-nodejs 使用教程

    前言 在前端开发的过程中,我们经常需要使用各种第三方工具来辅助我们完成开发工作。npm 是 Node.js 的包管理器,提供了丰富的第三方包,可以方便我们完成各类开发任务。

    2 年前
  • npm 包 tilestrata-postgismvt 使用教程

    简介 tilestrata-postgismvt 是一个基于 Node.js 和 PostGIS 的 npm 包,可以用于快速生成 Mapbox Vector Tiles。

    2 年前
  • npm 包 dac6573 使用教程

    什么是 npm 包? npm 包是由 Node.js 的包管理器 npm (Node Package Manager) 统一管理的代码集合。在技术领域中,包含了成千上万的模块和库,可以方便地安装和使用...

    2 年前
  • npm 包 appium-ios-driver-conan 使用教程

    什么是 appium-ios-driver-conan appium-ios-driver-conan 是一个 Node.js 的 npm 包,提供了在 appium 系统上自动 driver iOS...

    2 年前
  • npm 包 socialobjects 使用教程

    介绍 socialobjects 是一个 node.js 的 npm 包,用于在 Web 应用程序中集成社交媒体内容。它是一个使用方便、模块化的工具包,可以帮助开发人员更好地管理社交媒体内容。

    2 年前
  • npm 包 vetro 使用教程

    在前端开发中,经常需要进行页面布局和样式的调整。为了方便快捷地完成这些工作,我们可以使用 vetro 这个轻量级的 npm 包。vetro 允许我们在组件级别上改变样式,而不用在全局 CSS 文件中修...

    2 年前
  • npm包currency-symbol-mapper使用教程

    简介 currency-symbol-mapper是一个npm包,它可以将货币代码与其对应的符号进行映射。该包可以用于前端开发中货币单位的处理,解析国家的货币代码或符号。

    2 年前
  • npm 包 ng-ui-application 使用教程

    ng-ui-application 是一个前端 AngularJS 框架,它为开发人员提供了快速构建和部署单页应用程序所需的基本模块和组件。它使用 AngularJS 的知识架构,同时还提供了很多针对...

    2 年前
  • npm 包 machine-uuid-sync 使用教程

    在前端或其他领域开发中,处理 UUID 是一个很频繁的任务,而 npm 包 machine-uuid-sync 就是一个能帮助我们方便地生成 UUID 的包。本文将详细介绍该包的使用方法,并提供示例代...

    2 年前
  • npm 包 first-npm-comp 使用教程

    前言 npm(Node Package Manager)是管理 Node.js 的包的标准工具,开发者可以通过 npm 从全球下载其他开发者发布的包,方便自己开发。

    2 年前
  • npm 包 dockerode-mock 使用教程

    Dockerode-mock 是一个前端开发中常用的 npm 包,它能够帮助开发者在本地开发环境中模拟 Docker 容器,便于前端开发和测试。本文将为您介绍 dockerode-mock 的使用教程...

    2 年前
  • npm 包 @juliankniephoff/grunt-blanket-qunit 使用教程

    在前端开发中,测试是不可或缺的一环。而在测试框架中,QUnit 是最为受欢迎的之一。但是,QUnit 自带的覆盖率报告功能比较简单,无法满足大型项目的需要。因此,我们需要借助 @juliankniep...

    2 年前
  • npm 包 react-express-hotloader 使用教程

    前言 随着前端技术的快速发展,工具也越来越多样化。在 web 应用开发过程中,我们需要实时更新代码和进行热加载,以提高开发效率。为了实现这一目的,通过 npm 安装 react-express-hot...

    2 年前
  • npm 包 promise-catcher 使用教程

    在前端开发中,Promise 是一种非常实用的异步编程方式。然而,当 Promise 函数执行出现错误时,如果程序没有正确处理,将可能导致一些难以发现的 Bug。为了帮助开发者更容易地处理 Promi...

    2 年前
  • npm 包 react-native-simple-tab 使用教程

    在 React Native 应用中,tab 组件是非常重要和常用的组件之一。而 react-native-simple-tab 是一个简单易用的 tab 组件,可以帮助我们方便快捷地构建出漂亮的 U...

    2 年前
  • NPM 包 ngx-validate-tooltip 使用教程

    在前端开发中,表单验证是一个非常常见的需求。而 ngx-validate-tooltip 提供了一种简单易用的表单验证方案,可以很方便地用于 Angular 应用中。

    2 年前

相关推荐

    暂无文章