# @enbox/browser 中文文档

规范地址：https://npmcn.com/package/%40enbox/browser/

版本：0\.3\.90
npm 元数据更新时间：2026-11-12T05:34:07.879Z
中文译文更新时间：2026-11-14T00:11:57.329Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40enbox/browser
原文对照：https://npmcn.com/package/%40enbox/browser/?lang=original
项目主页：https://github.com/enboxorg/enbox/tree/main/packages/browser#readme
源码仓库：https://github.com/enboxorg/enbox

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

- 包体积（解压后）：959 kB，95 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：9 个
- 首次发布：2025-08-03T02:47:32.309Z
- 最新版本发布：2026-11-12T05:34:07.378Z
- 近 30 天下载量：2753（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：125（近 12 个月 123 个）

## 中文简介

在浏览器中使用的 Enbox 工具和特性

## 安装

```sh
npm install @enbox/browser
```

也可以使用：`pnpm add @enbox/browser`、`yarn add @enbox/browser`、`bun add @enbox/browser`

## README

# 信箱浏览器

> **研究预览** ——Enbox正在积极开发. API可不经通知而更改.

| Enbox 应用程序 APIS、 认证、 钱包连接和 DWeb 特性的浏览器入口 |
| --- |

[![NPM Package](https://img.shields.io/npm/v/@enbox/browser.svg?style=flat&color=blue&santize=true)](https://www.npmjs.com/package/@enbox/browser) [![NPM Downloads](https://img.shields.io/npm/dt/@enbox/browser?&color=blue)](https://www.npmjs.com/package/@enbox/browser) [![Build Status](https://img.shields.io/github/actions/workflow/status/enboxorg/enbox/ci.yml?branch=main&label=ci)](https://github.com/enboxorg/enbox/actions/workflows/ci.yml) [![Open Issues](https://img.shields.io/github/issues/enboxorg/enbox/package:%20browser?label=issues)](https://github.com/enboxorg/enbox/issues?q=is%3Aopen+is%3Aissue+label%3A%22package%3A+browser%22) [![Code Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/LiranCohen/02d15f39a46173a612a8862ec6d7cfcf/raw/browser.json)](https://github.com/enboxorg/enbox/actions/workflows/ci.yml)

## 安装

```bash
bun add @enbox/browser
```

## 使用量

`@enbox/browser` 再出口高级API,浏览器安全认证表面, 钱包连接处理器,和 DWeb 帮助器 :

```ts
import { createApplication } from '@enbox/browser';
import { NotesStore } from './features/notes/store.js';

const application = createApplication({
  stores: { notes: NotesStore },
  wallet: { appName: 'Notes' },
  connection: { monitor: { autoRefresh: {} } },
});

await application.initialize();

// Invoke directly from a user action so the wallet popup opens.
async function connect(): Promise<void> {
  const snapshot = await application.connection.connect();
  if (snapshot.phase !== 'connected') {
    throw snapshot.error ?? new Error('Connection was not established.');
  }
  const notes = application.store(NotesStore);
  // Subscribe to notes' resources or run its domain commands.
}
```

为浏览器寿命保留一个应用程序 。 它的表征来自 特性模块并拥有连接,会话范围的资源,命令, 和清理. `application.connection.disconnect()` 签出; `application.dispose()` 永远撕下主人。 反应绑住相同的 运行时间通过 `EnboxProvider application={application}`。 。 。 .

对于自定义主机, 供应 `connectHandler` 改为 `wallet`,或提供a `connection: manifest => nativeConnection` 拥有所有本土的工厂 配置 。 无头人 `@enbox/api` 建造者要求该工厂; 浏览器构建器提供浏览器默认在同一运行时间左右. 本地连接、记录和上下文原始语源仍然可用 流动. `defineStore`是因为 `observe()` 厂家拥有所有本地视图类型 一个订阅和清理机制.

## 钱包没有数据段的登录

打电话 `authenticateViaPopup()` 直接来自用户请求拥有者的动作 认证证明. 提供钱包 URL 和服务 `authentication: { version: 1, audience, challenge }` 请求。 结果是 `{ connectedDid, authentication }`,或 `undefined` 被拒绝时;没有妇发运动代表 创建会话。 该服务核实返回的证据准确无误 等待请求,并在建立登录前消耗一次挑战. 供应 `onAuthenticationRequest` 以登记生成的确切请求 钱包发送前的服务; 回调必须成功解决 在批准之前。 注册失败会关闭弹出 .

服务方面的核查需要独立的 `expected: { audience, challenge }` 从配置及其发布的交易,连同 存储完整请求。 必须拒绝未知或已经使用的挑战. 所有者认证需要HTTPS源,包括本地开发. 签了300秒后 证据就过期了 反应信封是分开的 600秒寿命不延长这一期限。 过期证明失败 登录, 即使钱包已经批准了合并模式的赠款 .

`connectViaPopup()` 还接受 `authentication` 将登录与其 明确 DWN 许可请求 。 现有的应用程序/连接存储器 APIs继续管理数据会话. 连接证明是一个 Enbox 钱包 原始;OAuth/OIDC 令牌发行属于接收服务.

未执行认证能力发现/谈判。 使用 只与已知的钱包合并模式: 较旧的钱包可以授予 请求数据访问, 然后不返回所有者证明, 无法登录 . 同样,最后签字失败也可将先前的书面赠款留在 地点 呼叫者在重新试验前必须调和或撤销部分结果; 被拒绝的合并作业不能证明DWN倒闭.

## 浏览器运行时间

每个浏览器 dapp 都必须注册一个调用应用程序的服务员 `activatePolyfills()`。页面拥有连接商店,记录视图,以及 WebSockets;工人拥有DRL取取截取和离线外壳. 保留 默认级别/ IndexedDB 存储堆栈.

在启动连接商店前, 请等待 `prepareBrowser(workerUrl, { registrationOptions: { type: 'module' } })` 或通过 从此页面已有注册 `navigator.serviceWorker` 当PWA 工具拥有注册。 帮手等那个工人控制页面 并激活页面多填充,并带有超时和中止信号。 申请 拥有更新激活。 工人方面 `activatePolyfills()` 债权客户在 启动,但让等待工人到位。 完成待处理的申请 在更新处理器请求前工作 `skipWaiting()` 并重新装入页面.

当前浏览器配置的软件包在页面中工作,而工人在不使用的情况下构建 Enbox 特定节点- 全球, `process`或者说IIFE shims。 跟着 [浏览器 dapp 指南](https://enbox-docs.pages.dev/docs/guides/browser-dapp) 以坚忍的维特盟誓, 启动、实时数据、托管和验证设置。 基本原理存在于 [浏览器 dapp 架构](https://github.com/enboxorg/enbox/blob/main/docs/architecture/browser-dapps.md)。 。 。 .

## 项目资源

| 资源 | 说明 |
| --- | --- |
| [一般事务人员(其他职等)](https://github.com/enboxorg/enbox/blob/main/AGENTS.md) | 贡献者工作流程和存储规则 |
| [许可证](https://github.com/enboxorg/enbox/blob/main/LICENSE) | Apache 许可证,2.0版本 |

## 常见问题

### @enbox/browser 是什么？

在浏览器中使用的 Enbox 工具和特性

### 如何安装 @enbox/browser？

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

### @enbox/browser 支持 TypeScript 吗？

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

### @enbox/browser 支持 ESM 还是 CommonJS？

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

### @enbox/browser 可以商用吗？

@enbox/browser 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @enbox/browser 的下载量有多少？

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

### @enbox/browser 还在维护吗？

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

