# @actuallab/fusion 中文文档

规范地址：https://npmcn.com/package/%40actuallab/fusion/

版本：15\.1\.24
npm 元数据更新时间：2026-11-07T11:40:12.077Z
中文译文更新时间：2026-11-06T11:29:36.178Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：240 kB，8 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-02-18T09:32:59.439Z
- 最新版本发布：2026-11-07T11:40:11.747Z
- 近 30 天下载量：3386（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：54（近 12 个月 54 个）

## 中文简介

TypeScript 实现 Fusion - 实时状态同步框架

## 安装

```sh
npm install @actuallab/fusion
```

也可以使用：`pnpm add @actuallab/fusion`、`yarn add @actuallab/fusion`、`bun add @actuallab/fusion`

## README

# @ actuallab/ 组合

[![npm](https://img.shields.io/npm/v/@actuallab/fusion)](https://www.npmjs.com/package/@actuallab/fusion) [![Documentation](https://img.shields.io/badge/Documentation-6B5B95)](https://fusion.actuallab.net/PartTS-Fusion) [![License](https://img.shields.io/npm/l/@actuallab/fusion)](https://github.com/ActualLab/Fusion/blob/master/LICENSE)

类型脚本执行 [组合](https://fusion.actuallab.net/)核心: 纪念 自动依赖跟踪和串联无效计算。 它给你 `Computed<T>`,则 `@computeMethod` 装饰者, `ComputedState<T>`, (中文(简体) ), `MutableState<T>`,以及 `UIActionTracker` ——同样抽象的"融合"在.NET上提供.

这个软件包独立工作(客户端被动状态,不需要服务器). 添加 [`@actuallab/fusion-rpc`](https://www.npmjs.com/package/@actuallab/fusion-rpc) 消费 无效的 .NET 服务器的计算服务,以及 [`@actuallab/fusion-react`](https://www.npmjs.com/package/@actuallab/fusion-react) 让他们成为 在反应.

## 安装

```bash
npm install @actuallab/fusion
```

无害环境管理首先采用CJS制;船舶自用 `.d.ts`。仅取决于 `@actuallab/core`。 。 。 .

## 计算方法

`@computeMethod` 相当于 .NET 的 `[ComputeMethod]` 它包着一个方法 与缓冲和 依赖跟踪。 结果按键 `JSON.stringify` 辩论.

```ts
import { computeMethod } from '@actuallab/fusion';

class CounterService {
    private _counters = new Map<string, number>();

    @computeMethod
    async get(key: string): Promise<number> {
        return this._counters.get(key) ?? 0;
    }

    @computeMethod
    async sum(key1: string, key2: string): Promise<number> {
        // sum() automatically depends on get(key1) and get(key2)
        return (await this.get(key1)) + (await this.get(key2));
    }

    increment(key: string): void {
        this._counters.set(key, (this._counters.get(key) ?? 0) + 1);
        (this.get as any).invalidate(key);  // cascades into sum()
    }
}
```

没有 `Invalidation.Begin()` 这里的块: 每个边框计算方法都包含一个 `.invalidate(...args)` 函数。 对于独立的函数,使用 `wrapComputeMethod`。 。 。 .

## 反应状态

`ComputedState<T>` 每当它使用的东西被作废时即重新计算; `MutableState<T>` 并使用同一依赖图.

```ts
import { ComputedState, MutableState, FixedDelayer } from '@actuallab/fusion';

const state = new ComputedState(
    async () => `Count: ${await counters.get('a')}`,
    { initialValue: 'loading...', updateDelayer: FixedDelayer.get(500) },
);

await state.whenFirstTimeUpdated();
state.value;     // "Count: 0" — and it updates on its own from here on
state.dispose(); // required: stops the update loop

const query = new MutableState('');
query.set('fusion');  // invalidates every computation that called query.use()
```

## API 表面

| API 密码 | 说明 |
| --- | --- |
| `Computed<T>`, (中文(简体) ), `ConsistencyState` | 缓存计算结果 : `.value`, (中文(简体) ), `.update()`, (中文(简体) ), `.use()`, (中文(简体) ), `.invalidate()`, (中文(简体) ), `.whenInvalidated()` |
| `Computed.capture(fn)` | 抓起来 `Computed<T>` 计算产生的呼叫 |
| `computeMethod`, (中文(简体) ), `wrapComputeMethod` | 将方法 / 函数转换为计算函数 |
| `ComputedOptions` | 按方法选择,例如:. `errorAutoInvalidateDelay` |
| `ComputedRegistry`, (中文(简体) ), `ComputeFunction`, (中文(简体) ), `ComputeContext` | 内核,用于高级/海关一体化 |
| `State<T>`, (中文(简体) ), `ComputedState<T>`, (中文(简体) ), `MutableState<T>` | 反应状态 |
| `UpdateDelayer`, (中文(简体) ), `FixedDelayer`, (中文(简体) ), `UIUpdateDelayer`, (中文(简体) ), `defaultUpdateDelayer` | 重算间距(%% 32 ms 地板, 重试后退) |
| `UIActionTracker`, (中文(简体) ), `uiActions` | 跟踪运行 UI 命令, 收集错误, 允许即时更新 |

## 页:1

-   **跨度的依赖跟踪 `await`。 。 。 .** 在节点20.16 `AsyncContext` 由 `AsyncLocalStorage`,所以它只是工作。 (笑声) 浏览器中的孩子 `AsyncContext` 交给你 将方法计算为有线索的论证——接受并转发入巢计算调用. 见 [AsyncContext:为什么它很重要](https://fusion.actuallab.net/PartTS#asynccontext-why-it-matters)。 。 。 .
-   **处理你的 `ComputedState`编号.** 否则他们的更新循环会持续运行.
-   **错误.** 默认 1 s 后自动验证错误输出( 可配置) 通过 `@computeMethod({ errorAutoInvalidateDelay })`),各州从不这样做——它们用后退来重试. 取消形状错误永远不会被缓存 .

## 文档

-   [`@actuallab/fusion` 参考文献](https://fusion.actuallab.net/PartTS-Fusion) ——完整的API表格和语义
-   [类型脚本端口概览](https://fusion.actuallab.net/PartTS)
-   [计算服务](https://fusion.actuallab.net/PartF) 财务报告和审定财务报表 [国家](https://fusion.actuallab.net/PartF-ST) ——概念,以.NET术语表示
-   [TodoApp 样本( 反应 + Fusion)](https://github.com/ActualLab/Fusion.Samples/tree/master/src/TodoApp)

## 许可证

麻省理工学院——见 [自由主义](https://github.com/ActualLab/Fusion/blob/master/LICENSE)。 。 。 .

## 常见问题

### @actuallab/fusion 是什么？

TypeScript 实现 Fusion - 实时状态同步框架

### 如何安装 @actuallab/fusion？

在项目目录运行 npm install @actuallab/fusion，或使用 pnpm add / yarn add / bun add。

### @actuallab/fusion 支持 TypeScript 吗？

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

### @actuallab/fusion 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @actuallab/fusion 可以商用吗？

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

### @actuallab/fusion 的下载量有多少？

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

### @actuallab/fusion 还在维护吗？

最新版本 15\.1\.24 发布于 2026/11/07（今天）；至今共发布 54 个版本，其中过去 12 个月发布了 54 个；首次发布于 2026/02/18。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

