# @orieg/expanse-wasm 中文文档

规范地址：https://npmcn.com/package/%40orieg/expanse-wasm/

版本：0\.17\.0
npm 元数据更新时间：2026-11-02T03:03:03.425Z
中文译文更新时间：2026-11-02T03:09:26.025Z
软件包许可：MIT OR Apache-2\.0

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

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

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

- 包体积（解压后）：261 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-08-26T04:14:37.287Z
- 最新版本发布：2026-11-02T03:03:03.058Z
- 已发布版本数：24（近 12 个月 24 个）

## 中文简介

用于以太坊的WebAssembly绑定：用于浏览器和边缘运行时的纯rust Judy数组

## 安装

```sh
npm install @orieg/expanse-wasm
```

也可以使用：`pnpm add @orieg/expanse-wasm`、`yarn add @orieg/expanse-wasm`、`bun add @orieg/expanse-wasm`

## README

# @orieg / expanse-wasm

的WebAssembly绑定 `expanse-trie`． 适用于Edge运行时（Cloudflare Workers, Fastly, Deno Deploy, Vercel）和现代浏览器。

## 安装

```sh
npm install @orieg/expanse-wasm
```

## 快速入门

```js
import { WasmExpanseSet, init_panic_hook } from '@orieg/expanse-wasm';

// Initialize panic hook for better error messages
init_panic_hook();

const set = new WasmExpanseSet();
set.add(42n);
console.log(set.contains(42n)); // true
```

**以数字树为后盾：**

-   `WasmExpanseSet32`： 32位数字树集，具有批处理执行方法
-   `WasmExpanseMap32`：具有批处理执行方法的32位数字trie map
-   `WasmExpanseSet`， `WasmExpanseMap`： 64位引擎 `wasm64`;一个 `BTreeMap` / `BTreeSet` 回退上 `wasm32`，而64位引擎则没有 存在

**不支持引擎- `BTreeMap` 占位符** （[\# 757](https://github.com/orieg/expanse/issues/757)):

-   `WasmExpanseStrMap`： `String` 来 `u64` 地图
-   `WasmExpanseBytesMap`： `&[u8]` 来 `u64` 地图
-   `WasmExpanseBlobMap`： `u64` 来 `&[u8]` 带有热元数据的映射

这三个进位 `Expanse*` 名字但是是 `std::collections::BTreeMap`。他们 没有那个人的记忆档案， `mem_used` 核算或节点结构， 和 **通过它们测量的数字不能说明发动机的情况**． 没有什么 所发布的内容依赖于它们：每一行WASM [`docs/BINDINGS_BENCHMARKS.md`](https://npmcn.com/package/docs/BINDINGS_BENCHMARKS.md) 每一只手臂 在 `scripts/wasm_fuel.py` 的范围为 `WasmExpanseMap32` / `WasmExpanseSet32`.

它们是占位符而不是包装器，因为它们是引擎类型 以…命名 `ExpanseStrMap`， `ExpanseBytesMap`， `ExpanseBlobMap` ——是 `#[cfg(target_pointer_width = "64")]` 也没有32位的双胞胎，所以他们没有 存在于 `wasm32`. `ExpanseBlobMap32` 存在，但不需要块大小和 使用32位密钥，因此采用它将缩小该类发布的API的范围 赢得这个名字所暗示的竞技场。

`WasmExpanseBlobMap`的构造函数 **拒绝** 一个 `chunk_size` 参数,而 而不是接受和抛弃它：没有大小的竞技场。

## WebAssembly内存`wasm64-unknown-unknown`)支持

以太坊支持64位WebAssembly线性内存(`Memory64`)，允许完整的64位原始指针引擎(`ExpanseMap`， `ExpanseSet`, 16字节 `Edge` 描述符)直接在支持64位内存空间的WebAssembly运行时中运行(例如带有 `--experimental-wasm-memory64` 或现代V8 / Wasm运行时)。

为…建造 `wasm64-unknown-unknown`：

```sh
cargo +nightly build -p expanse-wasm --target wasm64-unknown-unknown -Z build-std=std,panic_abort
```

要运行Node.js Memory64运行时冒烟测试：

```sh
node crates/expanse-wasm/tests/test_wasm64_smoke.js
```

## 交互式浏览器速度竞技场

交互式客户端基准比较 `WasmExpanseMap32` 对生锈 `BTreeMap` 和原生JavaScript `Map` 包含在 [`examples/speed_arena.html`](https://npmcn.com/package/%40orieg/expanse-wasm/examples/speed_arena.html).

本地运行：

```sh
wasm-pack build crates/expanse-wasm --target web --out-dir crates/expanse-wasm/examples/pkg
python3 -m http.server 8080 --directory crates/expanse-wasm/examples
```

开放 `http://localhost:8080/speed_arena.html`.

## 常见问题

### @orieg/expanse-wasm 是什么？

用于以太坊的WebAssembly绑定：用于浏览器和边缘运行时的纯rust Judy数组

### 如何安装 @orieg/expanse-wasm？

在项目目录运行 npm install @orieg/expanse-wasm，或使用 pnpm add / yarn add / bun add。

### @orieg/expanse-wasm 支持 TypeScript 吗？

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

### @orieg/expanse-wasm 支持 ESM 还是 CommonJS？

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

### @orieg/expanse-wasm 可以商用吗？

@orieg/expanse-wasm 使用 MIT OR Apache-2\.0 许可。可在 MIT、Apache-2\.0 中任选其一遵守。选择 MIT 时，宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @orieg/expanse-wasm 还在维护吗？

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

