Web3.js是以太坊生态中最核心的 库之一,它为前端开发者提供了与以太坊区块链交互的能力,通过Web3.js,我们可以轻松实现钱包连接、智能合约调用、交易签名等功能,让Web2应用无缝过渡到Web3世界,本文将通过具体实例,展示Web3.js的核心功能与应用场景。
我们需要建立与以太坊节点的连接,以 Mask为例,用户浏览器中安装的 Mask会注入window.ethereum对象,我们可以通过以下代码检测并初始化Web3.js:

if (typeof window.ethereum !== 'undefined') { // 使用 Mask提供的Provider const web3 = new Web3(window.ethereum); try { // 请求用户账号授权 await window.ethereum.request({ method: 'eth_requestAccounts' }); console.log('Web3已连接'); } catch (error) { console.error('用户拒绝连接', error); } } else { console.log('请安装 Mask'); }
连接成功后,我们可以获取用户的账户地址及余额信息:
const accounts = await web3.eth.getAccounts(); const account = accounts[0]; console.log('当前账户:', account); // 获取余额(单位:Wei) const balance = await web3.eth.getBalance(account); console.log('账户余额:', web3.utils.fromWei(balance, 'ether'), 'ETH');
假设我们有一个简单的代币合约,以下是如何读取合约数据并发起交易:
// 合约ABI和地址 const tokenAbi = [...]; // 合约的ABI数组 const tokenAddress = '0x...'; // 创建合约实例 const tokenContract = new web3.eth.Contract(tokenAbi, tokenAddress); // 读取合约数据(例如代币名称) const tokenName = await tokenContract.methods.name().call(); console.log('代币名称:', tokenName); // 发起交易(例如转账) const transferAmount = web3.utils.toWei('1', 'ether'); await tokenContract.methods.transfer('0x...', transferAmount) .send({ from: account }) .on('receipt', receipt => { console.log('交易收据:', receipt); });
Web3.js的这些基础功能可以构建丰富的DApp应用:
在使用Web3.js时,需要注意以下几点:
async/await或PromiseWeb3.js作为连接前端与区块链的关键工具,其简洁的API设计和强大的功能让开发者能够快速构建去中心化应用,随着Web3生态的不断发展,掌握Web3.js将成为前端开发者的必备技能之一。