跳转到主要内容
Change page

JavaScript 应用编程接口库

页面最后更新: 2026年2月25日

为了让 Web 应用程序能与以太坊区块链交互(即读取区块链数据和/或向网络发送交易),它必须连接到一个以太坊节点。

为此,每个以太坊客户端都实现了 JSON-RPC 规范,因此有一套统一的方法可供应用程序依赖。

如果你想要用 JavaScript 连接到一个以太坊节点, 可以使用原生 JavaScript,不过生态系统中存在一些方便的库,使得这个事情变得更加容易。 借助这些程序库,开发者可以编写直观的单行方法来初始化与以太坊交互的 JSON-RPC 请求(在后台运行)。

请注意,自合并后,运行一个节点需要两个相互连接的以太坊软件:一个执行客户端和一个共识客户端。 请确保你的节点同时包含执行客户端和共识客户端。 如果你的节点不在本地计算机上(例如,你的节点在 AWS 实例上运行),请相应地更新教程中的 IP 地址。 欲了解更多信息,请参阅我们关于运行节点的页面。

前提条件

除了理解 JavaScript,了解以太坊技术栈以太坊客户端也可能对您有帮助。

为什么要使用库?

这些库降低了与一个以太坊节点直接交互的复杂性。 它们还提供实用功能(例如,将 ETH 转换为 Gwei),这样,作为开发者,你就可以花更少的时间处理以太坊客户端的复杂性,而将更多时间专注于应用程序的独特功能。

库功能

连接到以太坊节点

使用提供程序,这些库允许你连接到以太坊并读取它的数据,不管是通过 JSON-RPC、INFURA、Etherscan、Alchemy 还是 Metamask。

**警告:**Web3.js 已于 2025 年 3 月 4 日归档。 阅读公告 (opens in a new tab)。 对于新项目,请考虑使用 ethers.js (opens in a new tab)viem (opens in a new tab) 等替代库。

Ethers 示例

// BrowserProvider 封装了一个标准的 Web3 提供程序,
// MetaMask 将其作为 window.ethereum 注入每个页面
const provider = new ethers.BrowserProvider(window.ethereum)

// MetaMask 插件还允许对交易进行签名,
// 以便发送以太币和支付费用来改变区块链内的状态。
// 为此,我们需要帐户签名者...
const signer = provider.getSigner()

Web3js 示例

一旦设置,你将能够查询区块链的以下内容:

  • 区块号
  • 燃料估算
  • 智能合约事件
  • 网络 ID
  • 以及更多...

钱包功能

这些库为你提供了创建钱包、管理密匙和签署交易的功能。

这里提供了 Ethers 中的一个示例

阅读完整文档 (opens in a new tab)

一旦设置,你将能够:

  • 创建帐户
  • 发送交易
  • 签署交易
  • 以及更多...

与智能合约函数交互

JavaScript 客户端库允许你的应用程序通过读取已编译合约的应用程序二进制接口 (ABI) 来调用智能合约函数。

ABI 本质上是以 JSON 格式解释了合约的功能,并且允许你像普通 JavaScript 对象一样使用它。

以下 Solidity 合约:

将会产生以下 JSON 代码:

这意味着你可以:

  • 发送一笔交易到指定的智能合约上,并执行智能合约上的方法
  • 调用方法去评估对燃料的需求量。这个方法的执行是在以太坊虚拟机中执行的。
  • 部署一个合约
  • 以及更多...

实用函数

这些实用功能为你提供了方便的快捷操作,让以太坊的构建变得更轻松一些。

以太币的默认价值单位是 Wei。 1 个以太币 = 1,000,000,000,000,000,000 WEI – 这意味着你需要处理很多的数字。 web3.utils.toWei 可将以太币转换为 Wei。

在 ethers 中,它看起来是这样的:

// 获取帐户中的资产(通过地址或者 ENS 名)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }

// 通常来说开发者可能会需要为用户格式化一下输出
// 用户更喜欢以 ether(而非 wei)表示的价值
ethers.utils.formatEther(balance)
// '2.337132817842795605'

可用程序库

Web3.js - 以太坊 JavaScript API。

Ethers.js - 在 JavaScript 和 TypeScript 中完整的以太坊钱包实现和实用工具。

The Graph - 一种用于索引以太坊和 IPFS 数据并使用 GraphQL 查询的协议。

Alchemy SDK - 围绕 Ethers.js 构建的、具有增强版 API 的封装器。

viem - 以太坊的 TypeScript 接口。

Drift - 带有内置缓存、挂钩和测试模拟功能的 TypeScript 元库。

扩展阅读{#further-reading}

你还知道哪些对你有帮助的社区资源? 请编辑本页面并添加进来!

这篇文章对您有帮助吗?