# @exodus/application 中文文档

规范地址：https://npmcn.com/package/%40exodus/application/

版本：4\.0\.1
npm 元数据更新时间：2026-10-09T20:38:21.070Z
中文译文更新时间：2026-11-14T04:08:31.897Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40exodus/application
原文对照：https://npmcn.com/package/%40exodus/application/?lang=original
项目主页：https://github.com/ExodusMovement/exodus/tree/master/libs/features/application
源码仓库：https://github.com/ExodusMovement/exodus

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

- 包体积（解压后）：83.2 kB，49 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：12 个
- 首次发布：2024-05-31T11:23:04.733Z
- 最新版本发布：2026-10-09T20:38:20.895Z
- 近 30 天下载量：10980（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：47（近 12 个月 10 个）

## 中文简介

管理Exodus SDK应用生命周期的特性.

## 安装

```sh
npm install @exodus/application
```

也可以使用：`pnpm add @exodus/application`、`yarn add @exodus/application`、`bun add @exodus/application`

## README

# @ exodus/ 应用程序

这个 `application` 软件包代表高级应用程序 使用出埃及语SDK.

## 目录

-   [如何运作](https://npmcn.com/package/%40exodus/application/#readme-how-it-works)
-   [使用量](https://npmcn.com/package/%40exodus/application/#readme-usage)
-   [生命周期钩](https://npmcn.com/package/%40exodus/application/#readme-lifecycle-hooks)
    -   [可用的钩子](https://npmcn.com/package/%40exodus/application/#readme-available-hooks)
    -   [视觉表现](https://npmcn.com/package/%40exodus/application/#readme-visual-representation)

## 如何运作

它协调创建、进口、删除和恢复 钱包,处理安全方面,如锁定和密码句 管理,并为其他组件提供灵活的钩子系统 应对生命周期事件.

## 使用量

该功能作为以下内容的一部分: `@exodus/headless`,没有 需要单独安装.

关于在API和UI方面使用这一特性的例子, 请参考相关的 [SDK游乐场页面](https://exodus-hydra.pages.dev/features/application)。 。 。 .

### 生命周期钩

在使用Exodus SDK时,应用程序可以订阅多个 生命周期钩,在 `application` 软件包.

钩子的订阅通过注册办理 `plugin` 节点 对IoC容器。 插件可以导出若干不同的 钩子,在相应的生命周期事件发生时被引用.

例如,如果您想要在应用程序时运行一些代码 启动时,您可以创建这样的插件 :

```typescript
const plugin = () => {
  const onStart = ({ isBackedUp }) => {
    // Run some code when the application starts
  }

  return {
    onStart,
  }
}

const myPluginDefinition = {
  id: 'myPlugin', // unique id
  type: 'plugin', // type of the node
  factory: plugin, // factory function
}
```

### 可用的钩子

一些钩子接收到参数,如果是,则在下面记录.

-   `onStart`: 应用程序启动时触发. 打电话 `{ walletExists, hasPassphraseSet, isLocked, isBackedUp, isRestoring }`。 。 。 .
-   `onRestart`: 应用程序重新启动时触发. 打电话 `{ reason }` 以及其他参数(视原因而定).
-   `onStop`: 应用程序停止时触发.
-   `onLoad`:不要使用这个钩. 其唯一目的是黑客支持浏览器扩展,UI可能会死后被重生而同时背景过程是长生. 在这种情况下, `onLoad` 当新的 UI 被重新创建并连接到背景进程时,就会被触发。 调用相同的参数 `onStart`。 。 。 .
-   `onUnload`: 应用程序卸下时触发,即,,, 应用程序关闭.
-   `onCreate`: 当新建钱包时触发 。 打电话 `{ walletExists, hasPassphraseSet, isLocked, isBackedUp, isRestoring, seedId, createResult }`。 。 。 .
-   `onImport`: 当钱包被导入时触发 。 打电话 `{ seedId, compatibilityMode, backupType, importResult }`。 。 。 .
-   `onDelete`: 删除钱包时触发.
-   `onRestore`: 当钱包(主种子)恢复进程启动时触发。 打电话 `{ backupType }`。 。 。 .
-   `onRestoreCompleted`: 当钱包种子恢复过程完成时触发. 打电话 `{ backupType }`。 。 。 .
-   `onAssetsSynced`:当资产同步时触发.
-   `onChangePassphrase`:密码句被更改后触发.
-   `onLock`:应用程序被锁定时触发.
-   `onUnlock`: 应用程序解锁后触发.
-   `onClear`: 应用程序被清除时触发,即, 在删除当前钱包后。 Hook 函数同时执行 .

### 视觉表现

您可以在下面找到一个可视化状态过渡间触发的钩子的状态图 :

```mermaid
stateDiagram-v2
    direction LR
    [*] --> Starting

    state Starting {
        direction LR

        state "Needs clear storage?*" as NeedsClear
        state "Is importing?" as IsImporting

        NeedsClear --> Clearing : CLEAR
        Clearing --> IsImporting
        IsImporting --> Importing : IMPORT
    }

    Starting --> Started : START

    state Started {
        direction LR

        state "Has seed?" as HasSeed

        HasSeed --> Empty : No
        HasSeed --> Locked : Yes

        Empty --> Locked : CREATE \n---or---\nIMPORT

        Locked --> Migrating : MIGRATE
        Migrating --> Unlocked : UNLOCK
        Unlocked --> Locked : LOCK

        Unlocked --> Restarting : DELETE


    }

    Restarting --> [*] : RESTART

    Started --> Started : LOAD

    classDef conditional fill:#ededed,stroke:#c2c2c2,color:#a6a6a6,stroke-width:2;

    class NeedsClear conditional
    class IsImporting conditional
    class HasSeed conditional
```

\* 如果种子不存在或正在恢复一个新的钱包,钱包需要清除存储

## 常见问题

### @exodus/application 是什么？

管理Exodus SDK应用生命周期的特性\.

### 如何安装 @exodus/application？

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

### @exodus/application 支持 TypeScript 吗？

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

### @exodus/application 支持 ESM 还是 CommonJS？

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

### @exodus/application 可以商用吗？

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

### @exodus/application 的下载量有多少？

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

### @exodus/application 还在维护吗？

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

