# @ensdomains/ensjs 中文文档

规范地址：https://npmcn.com/package/%40ensdomains/ensjs/

版本：5\.3\.1
npm 元数据更新时间：2026-11-13T12:17:14.233Z
中文译文更新时间：2026-11-13T17:59:47.119Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40ensdomains/ensjs
原文对照：https://npmcn.com/package/%40ensdomains/ensjs/?lang=original
源码仓库：https://github.com/ensdomains/ensjs

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

- 包体积（解压后）：2.2 MB，864 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22
- 运行依赖：7 个
- peer 依赖：viem ^2\.9\.2，graphql ^16\.0\.0 \|\| ^17\.0\.0，@ensdomains/dnsprovejs ^0\.5\.4 \|\| ^1\.0\.0
- 首次发布：2020-10-05T10:27:34.894Z
- 最新版本发布：2026-11-13T12:17:13.917Z
- 近 30 天下载量：113418（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：143（近 12 个月 26 个）

## 中文简介

ENS Javascript 合同互动图书馆

## 安装

```sh
npm install @ensdomains/ensjs
```

也可以使用：`pnpm add @ensdomains/ensjs`、`yarn add @ensdomains/ensjs`、`bun add @ensdomains/ensjs`

## README

# ![ENSjs](https://user-images.githubusercontent.com/11844316/161689061-98ea01ee-b119-40ac-a512-5370eb8b4107.svg)

最终的 ENS JavaScript 库 [维姆](https://github.com/wevm/viem) 在引擎盖下.

ENSjs是一个用于与Ethereum名称服务交互的TypeScript库. 它规定 在viem上方的可树可震动和可堆肥的动作,对两者都给予一等支持 ENS v1和ENS v2 (英语).

## 特征

-   延伸任何viem的可编译动作 `Client`
-   全树摇晃——只支付您导入的动作
-   多呼分批读取动作
-   TypeScript- first, 链式合同的严格类型
-   ENS v1 + ENS v2 并行支持
-   包括子图和DNS助手
-   独立 `@ensdomains/ensjs-abi` aBI 软件包片段

## 莫诺雷波布局

| 软件包 | 说明 |
| --- | --- |
| [`@ensdomains/ensjs`](https://npmcn.com/package/%40ensdomains/ensjs/packages/ensjs) | 主要图书馆——行动、客户端、图利茨 |
| [`@ensdomains/ensjs-abi`](https://npmcn.com/package/%40ensdomains/ensjs/packages/ensjs-abi) | ABI 每一份ENS合同的片断(v1 + v2) |
| [`@ensdomains/ensjs-react`](https://npmcn.com/package/%40ensdomains/ensjs/packages/react) | 搭建的反应钩 `@wagmi/core` |
| [`@ensdomains/ensjs-query-core`](https://npmcn.com/package/%40ensdomains/ensjs/packages/query-core) | `@wagmi/core` 查询集成 |

支持的链条 : `mainnet` (1)和 `sepolia` (11155111) (中文(简体) ).

## 安装

```sh
pnpm add @ensdomains/ensjs viem
```

你还需要 `viem` 2.9.2 作为同伴依赖。 一些特性需要可选的对等点 依赖性 :

| 软件包 | 需要时间 |
| --- | --- |
| `graphql` | `@ensdomains/ensjs/subgraph` |
| `@ensdomains/dnsprovejs` (单位:千美元)`^0.5.4 || ^1.0.0`(中文(简体) ) | `getDnsImportData` 从 `@ensdomains/ensjs/dns` |

## 开始

`addEnsContracts` 以所有 ENS 合同地址和子图 URL 扩展 viem 链条, 这样你就可以用它 与任何viem `createPublicClient` 编号 : `createWalletClient`。 。 。 .

```ts
import { http, createPublicClient } from 'viem'
import { mainnet } from 'viem/chains'
import { addEnsContracts } from '@ensdomains/ensjs'
import { getAddressRecord, getRecords } from '@ensdomains/ensjs/public'

const client = createPublicClient({
  chain: addEnsContracts(mainnet),
  transport: http(),
})

const eth = await getAddressRecord(client, { name: 'ens.eth' })
const records = await getRecords(client, {
  name: 'ens.eth',
  texts: ['com.twitter', 'avatar'],
  contentHash: true,
})
```

## 入境点

这个 `@ensdomains/ensjs` 软件包被分割为子路径导出, 以便捆绑者可以放下 所有你没有进口.

| 导入 | 目录 |
| --- | --- |
| `@ensdomains/ensjs` | `addEnsContracts`,错误类别 |
| `@ensdomains/ensjs/public` | 共享读取动作(分辨率、记录、倒数、价格、可用性) |
| `@ensdomains/ensjs/public/v1` | v1 具体读取 |
| `@ensdomains/ensjs/public/v2` | v2 具体读取 |
| `@ensdomains/ensjs/wallet` | 共享写入动作( 承诺、 注册、 更新、 设定个人记录) |
| `@ensdomains/ensjs/wallet/v1` | v1 专用写法( wrap/ unrap、 引信、 子名、 传输、 ), `setRecords`,主要名称) |
| `@ensdomains/ensjs/wallet/v2` | v2 特写 |
| `@ensdomains/ensjs/subgraph` | 子图客户端+查询( Q)`getSubnames`, (中文(简体) ), `getNamesForAddress`,历史,.) |
| `@ensdomains/ensjs/dns` | DNS 帮助者(`getDnsOwner`, (中文(简体) ), `importDnsName`, (中文(简体) ), `getDnsImportData`, (...) (中文(简体) ) |
| `@ensdomains/ensjs/utils` | 编译员(`getAddress`, (中文(简体) ), `getText`, (中文(简体) ), `getAbi`, (中文(简体) ), `getContentHash`),名称为 utils |
| `@ensdomains/ensjs/utils/v2` | v2 utils( 作用编码、 解析器资源、 犬类标识) |
| `@ensdomains/ensjs/contracts` | ABI 片断的再出口 |
| `@ensdomains/ensjs/chain` | 链条类型和帮助者(`ChainWithEns`, (中文(简体) ), `extendChainWithEns`, (中文(简体) ), `getChainContractAddress`(中文(简体) ) |

ABIs本身作为独立包发布,可直接导入:

```ts
import { permissionedRegistryGetStateSnippet } from '@ensdomains/ensjs-abi/v2/permissionedRegistry'
import { ethRegistrarControllerRegisterSnippet } from '@ensdomains/ensjs-abi/v1/ethRegistrarController'
```

## 行动模式

每一个动作都是简单的功能 `Client` 第一和第二参数.

```ts
const result = await actionName(client, {
  /* params */
})
```

读取动作使用 `getAction` + 键 `readContract` 编号 : `multicall` 所以他们用什么工作 批量配置在客户端上。 写入动作返回交易散列并接受 标准viem 写入参数(`account`, (中文(简体) ), `chain`,气体等).

## 发展

```sh
# Install
pnpm install

# Build everything
pnpm -r build

# Build a single package
pnpm -F @ensdomains/ensjs build
pnpm -F @ensdomains/ensjs-abi build

# Lint (Biome)
pnpm lint

# Type check
pnpm -F @ensdomains/ensjs check:types

# Test the main package
pnpm -F @ensdomains/ensjs test
pnpm -F @ensdomains/ensjs test:watch
pnpm -F @ensdomains/ensjs test src/actions/public/resolver/getRecords.test.ts

# Generate the markdown docs
pnpm -F @ensdomains/ensjs generateDocs

# Versioning (changesets)
pnpm chgset:run
pnpm chgset:version
```

测试与已部署的ENS合同的当地devnet对接,测试名称被播种 (单位:千美元)`ghcr.io/ensdomains/contracts-v2`),所以多克需要运行. `test` 启动devnet 通过 `packages/ensjs/compose.yml` 然后停止它之后。 如果已经运行 `localhost:8545`,它是重复使用的:

```sh
docker compose -f packages/ensjs/compose.yml up -d devnet
```

主包需要22个节点(18个) `query-core`工具:pnpm 12, TypeScript 严格模式, Biome 用于格式化和林化, Vitest 用于测试.

## 捐款

见 [捐款额](https://npmcn.com/package/%40ensdomains/ensjs/CONTRIBUTING.md) 指导增加新行动,连接新行动 ABI 片段,登记新的合同地址,以及在整个 复发.

## 文档

指南和API的参考文献在 [`docs/`](https://npmcn.com/package/%40ensdomains/ensjs/docs/README.md)。API的参考文献是 生成源 JSDoc 与 `pnpm -F @ensdomains/ensjs generateDocs`。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @ensdomains/ensjs 是什么？

ENS Javascript 合同互动图书馆

### 如何安装 @ensdomains/ensjs？

在项目目录运行 npm install @ensdomains/ensjs，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：viem（^2\.9\.2）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @ensdomains/ensjs 支持 TypeScript 吗？

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

### @ensdomains/ensjs 支持 ESM 还是 CommonJS？

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

### @ensdomains/ensjs 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @ensdomains/ensjs 可以商用吗？

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

### @ensdomains/ensjs 的下载量有多少？

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

### @ensdomains/ensjs 还在维护吗？

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

