开发者进阶中级1034 次阅读
Web3 SDK 选型:ethers、viem、web3.js 该用哪个
对比 ethers、viem 与 web3.js 在类型、体积、错误处理与生态上的差异,给出新项目和存量项目各自的选型建议。
#SDK#前端#工具链#TypeScript#选型
一句话结论
三个 SDK 都能把交易发上链,真正拉开差距的是类型体验、错误表达和维护成本。新项目默认选 viem 或 ethers,只有在接手存量代码时才继续用 web3.js。
四个维度怎么看
类型支持。ethers 与 viem 都是一等公民的 TypeScript 实现,能从合约 ABI 推导出方法参数与返回值类型,字段名写错在编译期就会报错;web3.js 的历史更久,类型信息多是后补的,动态类型的用法更常见。
包体积。viem 采用模块化设计,按需引入,打包工具能摇掉没用到的部分,对首屏体积敏感的前端更友好;ethers 提供相对完整的单一入口;web3.js 的依赖较重,通常是三者中体积最大的。
错误处理。这一项最容易被忽略。链上开发里「用户点拒绝」「链上 revert」「RPC 超时」是三件完全不同的事,要给用户三种不同提示。SDK 是否把底层错误包装成可判断的结构化错误,直接决定你要写多少字符串匹配。
生态与文档。ethers 出现最早,教程和示例最多,搜索命中率高;viem 与 React 侧的连接工具配合紧密,类型链路更短;web3.js 在其他链生态中仍有位置,以太坊侧主要用于存量项目。
怎么选
- 全新前端项目:优先 viem,类型推导与体积都占优。
- 已积累大量 ethers 代码:继续用 ethers,迁移收益通常小于风险。
- 只跑脚本或后端任务:三者都够用,选团队最熟的那个。
给你的教训
- 不要在同一个项目里长期混用两套 SDK:它们对同一概念的类型定义不兼容,最后会多出一层互相转换的胶水代码。
- 把 SDK 用法收敛到一层封装里:业务代码不直接调用 SDK,日后换库才不用全局重写。
- 错误提示要按用户能理解的语言分层:拒绝签名、余额不足、链上拥堵,文案完全不同,别都叫「交易失败」。
- 选库前看它最近一年的发布节奏与 issue 响应速度,维护活跃度比 Star 数更能说明问题。
延伸阅读
动手教程
把这个概念用起来的分步实操,跟着做一遍比再读十篇都记得牢
钱包基础认知:自持钱包、托管钱包与钱包分类
把「钱包」这件事一次讲透:钱包里其实不存币,只保存私钥,资产永远记在链上;自持钱包与交易所托管钱包在控制权、责任与风险上的根本差别;浏览器扩展、手机 App、网页钱包、桌面客户端四种形态各自适合谁;热钱包与冷钱包如何按联网状态划分风险等级;EOA 外部账户与合约钱包(账户抽象 / 智能钱包)的本质区别;助记词钱包(HD 钱包)为什么一组词能管住所有地址;MetaMask、OKX Wallet、Rabby、Trust、imToken、Phantom 等主流钱包的横向对比与选型建议;最后给出「日常热钱包 + 储值冷钱包」的分层使用框架。
预计 25-35 分钟 →
Web3 钱包使用:从交易所走向自持
从「Not your keys, not your coins」讲起,手把手完成第一次自持:认识钱包类型、选择第一只钱包、从官网安装并创建、手抄 12 词助记词并离线保存、添加 Base / Arbitrum One / BNB Chain 网络与导入代币、从交易所提币到钱包的完整案例、Gas 设置与卡单加速、连接 DApp 的签名与授权管理,最后是钱包与交易所的分工和被盗应急顺序。
预计 20-30 分钟 →
相关问题
读者在这类操作前后最常搜索的问题
免责声明与合规提示内容更新日期:2026-11-04
- 本站全部内容仅用于技术学习与科普,不构成任何投资建议、要约或招揽。 数字资产价格波动剧烈,请独立判断并自行承担决策结果。
- 教程记录的是撰写时的产品界面与规则,相关产品更新频繁, 实际操作请以官方当前界面与公告为准。发现内容过时,欢迎在对应页面反馈。
想系统排查自己的安全习惯?从安全自查清单开始。