# @achrinza/event-pubsub 中文文档

规范地址：https://npmcn.com/package/%40achrinza/event-pubsub/

版本：5\.0\.11
npm 元数据更新时间：2024-05-28T07:55:40.883Z
中文译文更新时间：2026-11-05T19:33:06.510Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40achrinza/event-pubsub
原文对照：https://npmcn.com/package/%40achrinza/event-pubsub/?lang=original
项目主页：https://github.com/achrinza/event-pubsub
源码仓库：https://github.com/achrinza/event-pubsub

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：16.4 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：13 \|\| 14 \|\| 16 \|\| 17 \|\| 18 \|\| 19 \|\| 20 \|\| 21 \|\| 22
- 运行依赖：1 个
- 首次发布：2022-03-25T08:35:23.921Z
- 最新版本发布：2024-05-28T07:55:40.713Z
- 近 30 天下载量：35634（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @achrinza/event-pubsub
```

也可以使用：`pnpm add @achrinza/event-pubsub`、`yarn add @achrinza/event-pubsub`、`bun add @achrinza/event-pubsub`

## README

# 事件 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- 服务器](https://github.com/RIAEvangelist/node-http-server)。所以,如果您想要快速链接到示例和测试网页,则本模块根部会有一个有链接的页面。 你可以通过去 [本地主页](http://localhost:8000/) : http://localhost:8000 (英语)

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

## 数字海洋静态App

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

## 基本实例

```javascript

//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'
);

```

#### 基本连锁

```javascript

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

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

```

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

```javascript
//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 初选,物体,类, 甚至花花花公子 功能和发电机。 这应该有助于确保你的代码不会做出乎意料的事情.

[完全强类型的文件](https://github.com/RIAEvangelist/strong-type)

#### 对于节点

既然我们对节点和浏览器使用相同的文件,我们需要模仿一个制作 `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](https://raw.githubusercontent.com/RIAEvangelist/@achrinza/event-pubsub/master/example/img/node-@achrinza/event-pubsub-es6.PNG)

#### 对于浏览器

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

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

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

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

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

```json

 "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](https://github.com/node-ipc/vanilla-test) 是一个非常甜美, 最小化的ES6+测试套件, 用于浏览器和节点。 你可以用 `npm test`

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

### [参见 C8 代码覆盖](https://cdn-avsja.ondigitalocean.app/@achrinza/event-pubsub/coverage/)

## 节点香草测试截图

![node @achrinza/event-pubsub vanilla-test report](https://raw.githubusercontent.com/RIAEvangelist/@achrinza/event-pubsub/master/example/img/node-vanilla-test-@achrinza/event-pubsub-es6.PNG)

## Chrome 香草测试截图

![Chrome @achrinza/event-pubsub vanilla-test report](https://raw.githubusercontent.com/RIAEvangelist/@achrinza/event-pubsub/master/example/img/chrome-vanilla-test-@achrinza/event-pubsub-es6.PNG)

## Chrome 示例截图

![Chrome @achrinza/event-pubsub basic example](https://raw.githubusercontent.com/RIAEvangelist/@achrinza/event-pubsub/master/example/img/chrome-@achrinza/event-pubsub-es6.PNG)

## 边缘示例屏幕截图

![Edge @achrinza/event-pubsub basic example](https://raw.githubusercontent.com/RIAEvangelist/@achrinza/event-pubsub/master/example/img/edge-@achrinza/event-pubsub-es6.PNG)

## FireFox 夜行示例截图

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

![FireFox-nightly @achrinza/event-pubsub basic example](https://raw.githubusercontent.com/RIAEvangelist/@achrinza/event-pubsub/master/example/img/FireFox-nightly-@achrinza/event-pubsub-es6.PNG)

## 常见问题

### @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 和提交记录判断。

