ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

RxJS

CI Release readiness Observable WPT npm stable npm next npm downloads Apache 2.0

Observable: platform native Extensions: Symbol keyed

RxJS 是一个用于使用 Observable 值组合异步和基于事件的程序的库。此仓库包含基于平台的下一代 RxJS,计划发布为 RxJS 9

RxJS 9 是正在开发中的预发布版本。计划的首个 beta 版本是 9.0.0-beta.0,但尚未发布到 npm。next 标签仍然 指向早期的 RxJS 8 预发布版本,而 RxJS 7 仍然是生产 latest 版本并继续得到维护。

为什么是 RxJS 9?RxJS 8 发生了什么?

RxJS 8 是实际的工作,并非跳过的版本。开发几年前就已开始, 并在 Web Platform Observable 提案定稿期间暂停。新的 实现是基于平台的新一代,而非该暂停的 RxJS 8 分支的延续,因此从版本 9 开始,以明确架构 的断裂,并避免将旧的 RxJS 8 工作呈现为已发布的 产品。

RxJS 9 有什么不同?

  • RxJS 在存在原生 web 平台 Observable 时使用它,仅在需要时安装一个符合规范的后备方案。
  • RxJS 操作符和工厂是精确的、模块拥有的 Symbols。它们不会向平台 API 添加字符串命名的 RxJS 方法。
  • 平台 Observable 行为和每个订阅的生产者行为是明确的、独立的契约。当每个直接订阅必须创建自己的生产者时,请使用 ColdObservable
  • 取消机制基于 AbortSignal 和平台 Subscriber 生命周期构建。
  • 发布的 JavaScript 仅支持 ESM。当前 Node 可以将 require() 桥接到相同的 ESM 文件;没有重复的 CommonJS 构建。

预览 RxJS 9 API

以下示例展示了计划中的 beta API。在 9.0.0-beta.0 发布之前,请勿使用 npm 的 next 标签来安装 RxJS 9。

import { ColdObservable } from 'rxjs';
import { map } from 'rxjs/map';

const source = new ColdObservable<number>((subscriber) => {
  subscriber.next(1);
  subscriber.next(2);
  subscriber.complete();
});

source[map]((value) => value * 2).subscribe(console.log);

导入 Symbol 并使用括号语法调用它。诸如 observable.map(project) 这样的平台方法仍然是平台契约; observable[map](project) 是独立版本化的 RxJS 契约。

包和文档

用途文档
rxjsSymbol 扩展和有意设计的 RxJS 原语包指南 · API · RxJS 7 迁移
@rxjs/observable-polyfill条件性平台 Observable 回退包指南
@rxjs/test与实现无关的虚拟时间和大理石测试包指南
@rxjs/migrate确定性迁移引擎和规范代理 Skill包指南

发布支持、预算以及精确的环境门槛记录在 rxjs中。不可逆的 npm 发布流程是公开的安全发布操作手册RxJS 9 安全保证文档 在上下文中解释了发布证据、验证命令、单一维护者模型 以及 OpenSSF Scorecard。 整个仓库的设计记录位于 docs/rxjs-next

支持的环境

计划中的 beta 版本将 Node 22.13+ 和 Node 24 作为阻塞性通道,Node 26 作为建议性通道。当前版本的 Chrome、Firefox、桌面版 Safari、移动版 Safari、 Deno、Bun 和 Webpack 5 均为阻塞性。所有受支持的消费者都接收 相同的 ESM 实现,因此 Deno 和 Bun 支持不会增加任何运行时特定的 包或应用捆绑代码。

贡献

需要 Node 22.13+ 和 pnpm 10.34.5。请在仓库根目录运行命令。

pnpm install
pnpm --filter rxjs exec vitest --run src
pnpm --filter rxjs run test:package
pnpm run release:check

仓库贡献指南rxjs 包贡献指南开始。当前 执行队列是 PROJECT_PLAN.md

完整的源固定 RxJS 7 语料库有意保留了已审查的 生命周期和兼容性差异,因此它是迁移证据,而非 全面的 RxJS 9 兼容性门槛。聚焦的源、包、运行时、 浏览器、性能和 WPT 命令是发布门槛。

社区与治理