@achrinza/event-pubsub

中文文档
5.0.11发布于 2024/05/28MITES Module近 30 天下载 3.6万

超级光和快可扩展的ES6+事件和事件EventEmiters用于节点和浏览器. 对于任何开发者关卡来说都很容易,在节点和浏览器中使用相同的精确代码. 没有螺丝,只是高速事件!

中文使用文档
文档目录13 节
  1. 地方网站
  2. 数字海洋静态App
  3. 基本实例
  4. 基本事件发送和/或扩展活动
  5. 严格类型检查
  6. 我是如何模仿模块内部的制作装置的?
  7. 用香草测试完成测试
  8. 参见 C8 代码覆盖
  9. 节点香草测试截图
  10. Chrome 香草测试截图
  11. Chrome 示例截图
  12. 边缘示例屏幕截图
  13. FireFox 夜行示例截图

事件 PubSub

npm install @achrinza/event-pubsub

超轻快 用于节点和浏览器的可扩展的ES6+事件系统,在节点中工作的相同文件将在浏览器中工作而没有任何修改. 如果您必须支持旧浏览器, 您可以转录模块 .

方法

方法参数说明
打开类型 :string,处理器 :function,一次:boolean将绑定 handler 函数到 type 活动。 碞钩 addEventListener 在浏览器中。 如果一次被设定为真实的话,在被调用一次后,手递者将被移除.
一次类型 :string,处理器 :function将绑定 handler 函数到 type 事件并解开 一个 执行。 碞钩 addEventListener 在浏览器中使用 once 选项集
关类型/*数字 :string,处理器/*数字 :function将 无绑定 handler 从 type 活动。 如果 handler 实值 *,所有事件类型的处理器将被删除。 碞钩 removeEventListener 在浏览器中,但也可以删除该类型的所有事件处理器.
发射类型 :string, (中文(简体) ), ...data 参数将呼叫所有 handler 绑定在 * 事件和事件 type 活动。 它会通过所有的 ...data arguments 给那些处理者 * 事件,第一个参数将是 type 您可以过滤事件
重设删除所有类型事件,包括 *

成员

成员类型说明
列表对象列出所有约束事件的代表,主要用于能见度.

这个 * 事件类型

这个 * 将触发事件类型 任意 emit这些也先运行。 处理者 * 应期望第一个参数是: type 之后的所有参数都是数据参数.

地方网站

npm start 实际开始 a 节点- http- 服务器。所以,如果您想要快速链接到示例和测试网页,则本模块根部会有一个有链接的页面。 你可以通过去 本地主页 : http://localhost:8000 (英语)

如果您的路由器和防火墙没有屏蔽您的 IP/ ports, 您也可以去 http://[your-ip-here]:8000/ 在任何设备上,包括您的移动设备,只要它在同一网络上.

数字海洋静态App

我们使用免费的数字海洋静态Apps来托管本地服务器的版本. 这跟你从机器上开始的一样 也可以像CDN一样使用,因为它每次更新分支时都会自动从主/主重建. @achrinza/event-pubsub CDN 家 页:1

基本实例


//relative paths will let your code work in both node and the browser without transpiling unless you want to.
import EventPubSub from './node_modules/@achrinza/event-pubsub/index.js';

events=new EventPubSub

events.on(
    'hello',
    (data)=>{
        console.log('hello event recieved ', data);
    }
);

events.emit(
    'hello',
    'world'
);

基本连锁


events.on(
    'hello',
    someFunction
).on(
    'goodbye',
    anotherFunction
).emit(
    'hello',
    'world'
);

events.emit(
    'goodbye',
    'humans'
).off(
    'hello',
    '*'
);

基本事件发送和/或扩展活动

//relative paths will let your code work in both node and the browser!
import EventPubSub from './node_modules/@achrinza/event-pubsub/index.js';


class Book extends EventPubSub{
    constructor(){
        super();
        //now Book has .on, .off, and .emit

        this.words=[];
    }

    add(...words){
        this.words.push(...words);
        this.emit(
            'added',
            ...words
        );
    }

    read(){
        this.emit(
            'reading'
        );
        console.log(this.words.join(' '));
    }
}

const book=new Book;

book.on(
    'added',
    function(...words){
        console.log('words added : ',words);
        this.read();
    }
);

book.add(
    'once','upon','a','time','in','a','cubicle'
);


严格类型检查

@achrinza/event-pubsub 使用该 strong-type 提供测试方法的类 全部 建在js 初选,物体,类, 甚至花花花公子 功能和发电机。 这应该有助于确保你的代码不会做出乎意料的事情.

完全强类型的文件

对于节点

既然我们对节点和浏览器使用相同的文件,我们需要模仿一个制作 npm i @achrinza/event-pubsub 在示例文件夹中,请确定:

第一次运行 npm run emulate

然后运行以下任何示例

node ./example/basic.js
node ./example/miltiple.js
node ./example/extending.js
node ./example/once.js

node @achrinza/event-pubsub basic example

对于浏览器

运行 npm start 这将自动运行 npm run emulate 你也一样.

那就去那边 本地服务器 :http://localhost:8000 从这里可以看到例子和测试. 还是直接去 本地实例 : http://localhost:8000/example/ (中文(简体) ). 它实际上将节点实例导入到浏览器中并运行,同样准确的文件,没有转录或自定义的浏览器代码. 如果你想转写,你可以.

我是如何模仿模块内部的制作装置的?

其实我很满意这有多容易 在您的项目中使用同类型的脚本, 请随意 。 您甚至可以复制粘贴并只需修改 repo/模块名称即可. 这是我的包裹的密码 使用qq很重要 否则您的命令会平行运行, 您真的需要它们进行解剖运行 .

之所以需要这样做,是因为我们在ES6+模块中使用了相对路径,允许相同的精确j在节点和浏览器中工作. 我们一直在等待的!


 "scripts": {
    "test": "npm run emulate && node ./test/CI.js",
    "start": "npm run emulate && node-http-server port=8000 verbose=true",
    "emulate": "npm i && copyfiles -V \"./!(node_modules)/*\" \"./**!(node_modules)\"  \"./example/node_modules/@achrinza/event-pubsub/\" && copyfiles -V \"./node_modules/**/*\" \"./example/\" && copyfiles -V \"./!(node_modules)/*\" \"./**!(node_modules)\"  \"./test/node_modules/@achrinza/event-pubsub/\" && copyfiles -V \"./node_modules/**/*\" \"./test/\""
},

用香草测试完成测试

@node-ipc/ vanilla- test 是一个非常甜美, 最小化的ES6+测试套件, 用于浏览器和节点。 你可以用 npm test

另外,如果运行,测试可以在浏览器中运行 npm start 然后,然后去 本地服务器 : http://localhost:8000并点击测试链接. 另外,请记住,您应该能够通过http://[您-ip:8000]访问它们,前提是您的纤维墙和路由器没有屏蔽您的ip或端口.

参见 C8 代码覆盖

节点香草测试截图

node @achrinza/event-pubsub vanilla-test report

Chrome 香草测试截图

Chrome @achrinza/event-pubsub vanilla-test report

Chrome 示例截图

Chrome @achrinza/event-pubsub basic example

边缘示例屏幕截图

Edge @achrinza/event-pubsub basic example

FireFox 夜行示例截图

截至2020年2月11日 仍然不支持私人田地 或方法在js班, 然而,夜建 包含在一面旗帜后。 随着私人领域和方法旗被设定成真,"火狐"夜行像魅力.

FireFox-nightly @achrinza/event-pubsub basic example

版本与发布记录

@achrinza/event-pubsub 共发布 8 个版本,首次发布于 2022/03/25;过去 12 个月发布了 0 个版本。

版本发布日期距今
5.0.11latest2024/05/282 年前
5.0.102023/10/253 年前
5.0.92023/06/223 年前
5.0.82022/10/234 年前
5.0.72022/08/224 年前
5.0.62022/03/264 年前

关于 @achrinza/event-pubsub 的常见问题

@achrinza/event-pubsub 是什么?

超级光和快可扩展的ES6+事件和事件EventEmiters用于节点和浏览器. 对于任何开发者关卡来说都很容易,在节点和浏览器中使用相同的精确代码. 没有螺丝,只是高速事件!

如何安装 @achrinza/event-pubsub?

在项目目录运行 npm install @achrinza/event-pubsub,或使用 pnpm add / yarn add / bun add。

@achrinza/event-pubsub 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/achrinza__event-pubsub 是否存在。

@achrinza/event-pubsub 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@achrinza/event-pubsub 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js 13 || 14 || 16 || 17 || 18 || 19 || 20 || 21 || 22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@achrinza/event-pubsub 可以商用吗?

@achrinza/event-pubsub 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@achrinza/event-pubsub 的下载量有多少?

根据 npm 官方下载统计,@achrinza/event-pubsub 在 2026/10/05 – 2026/11/03 这 30 天内被下载 35,634 次,日均约 1,188 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@achrinza/event-pubsub 还在维护吗?

最新版本 5.0.11 发布于 2024/05/28(2 年前);至今共发布 8 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/03/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。