# @effectionx/node 中文文档

规范地址：https://npmcn.com/package/%40effectionx/node/

版本：0\.2\.5
npm 元数据更新时间：2026-09-30T21:08:24.454Z
中文译文更新时间：2026-11-13T08:24:49.255Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40effectionx/node
原文对照：https://npmcn.com/package/%40effectionx/node/?lang=original
项目主页：https://github.com/thefrontside/effectionx#readme
源码仓库：https://github.com/thefrontside/effectionx

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

- 包体积（解压后）：71.8 kB，13 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：effection ^3 \|\| ^4
- 首次发布：2026-01-18T19:47:18.116Z
- 最新版本发布：2026-09-03T14:15:08.095Z
- 近 30 天下载量：98571（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 6 个）

## 中文简介

用于效果的节点.js流和事件发射器

## 安装

```sh
npm install @effectionx/node
```

也可以使用：`pnpm add @effectionx/node`、`yarn add @effectionx/node`、`bun add @effectionx/node`

## README

# 节点

效应方案专用节点Js公用事业. 此软件包提供 用于使用结构化的节点流和事件发射器工作的适配器 货币.

* * *

## 安装

```bash
npm install @effectionx/node
```

## 模块

这个包提供了两个子模块:

-   `@effectionx/node/stream` - 节点水电流
-   `@effectionx/node/events` - 节点Js活动设备

您也可以从主模块导入全部 :

```typescript
import { fromReadable, on, once } from "@effectionx/node";
```

## 流线公用事业

### 从可读()

将可读流转换为效果流 .

```typescript
import fs from "node:fs";
import { each, main } from "effection";
import { fromReadable } from "@effectionx/node/stream";

await main(function* () {
  const fileStream = fs.createReadStream("./data.txt");

  for (const chunk of yield* each(fromReadable(fileStream))) {
    console.log(new TextDecoder().decode(chunk));
    yield* each.next();
  }
});
```

返回的流出 `Uint8Array` 块并自动清理 关闭流或关闭操作时的事件听众.

## 水电费

### 日期( )

创建来自任何事件Emitter或类似事件目标对象的事件流 .

这项工作涉及:

-   节点.js 事件发送器(使用) `on`编号 :`off`(中文(简体) )
-   DOM 事件目标( 使用) `addEventListener`编号 :`removeEventListener`(中文(简体) )
-   网络工人全球 `self` 对象

```typescript
import { each, main } from "effection";
import { on } from "@effectionx/node/events";

await main(function* () {
  // With Node.js EventEmitter
  for (const [chunk] of yield* each(on(stream, "data"))) {
    console.log("data:", chunk);
    yield* each.next();
  }

  // In a worker thread (EventTarget style)
  for (const [event] of yield* each(on(self, "message"))) {
    console.log("received:", event.data);
    yield* each.next();
  }
});
```

对于事件Emitters,事件会作为参数阵列释放出. 对于事件目标,事件作为包含以下内容的单元素阵列发射: 事件对象.

### 一次( )

创建一个输出下一个事件由事件 Emitter 释放的操作 或类似事件目标的对象.

```typescript
import { main } from "effection";
import { once } from "@effectionx/node/events";

await main(function* () {
  // Wait for a single message (EventTarget style)
  const [event] = yield* once(self, "message");
  console.log(event.data);

  // Wait for a single event (EventEmitter style)
  const [code] = yield* once(process, "exit");
  console.log("Process exited with code:", code);
});
```

## 类型脚本支持

所有出口都包括了TypeScript类型定义. 事件函数支持 类型安全事件处理的通用类型参数 :

```typescript
import { once, on } from "@effectionx/node/events";

// Type the event arguments
const [code] = yield* once<[number]>(process, "exit");

// Type the stream events
for (const [data] of yield* each(on<[Buffer]>(stream, "data"))) {
  // data is typed as Buffer
  yield* each.next();
}
```

## 接口

事件公用设施与执行这些接口的任何对象合作:

```typescript
// Node.js EventEmitter style
interface EventEmitterLike {
  on(event: string, listener: (...args: unknown[]) => void): void;
  off(event: string, listener: (...args: unknown[]) => void): void;
}

// DOM EventTarget style
interface EventTargetLike {
  addEventListener(event: string, listener: (event: unknown) => void): void;
  removeEventListener(event: string, listener: (event: unknown) => void): void;
}
```

## 常见问题

### @effectionx/node 是什么？

用于效果的节点\.js流和事件发射器

### 如何安装 @effectionx/node？

在项目目录运行 npm install @effectionx/node，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：effection（^3 \|\| ^4）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @effectionx/node 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @effectionx/node 支持 ESM 还是 CommonJS？

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

### @effectionx/node 可以商用吗？

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

### @effectionx/node 的下载量有多少？

根据 npm 官方下载统计，@effectionx/node 在 2026/10/13 – 2026/11/11 这 30 天内被下载 98,571 次，日均约 3,286 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @effectionx/node 还在维护吗？

最新版本 0\.2\.5 发布于 2026/09/03（2 个月前）；至今共发布 6 个版本，其中过去 12 个月发布了 6 个；首次发布于 2026/01/19。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

