本文对两个以太坊开发框架——Hardhat和Truffle进行了详细比较,介绍了各自的功能、优缺点以及使用场景。文章提供了有关开发环境的实用信息,帮助初学者选择适合自己的工具。
在区块链开发者的生活中,一个主要的痛点是找到最适合他/她的框架或工具。人们会花费数天或数周时间来寻找适合他们的工具。
同样,在区块链世界中,一个主要的争论是选择 Hardhat 还是 Truffle。
这些开发环境帮助开发者管理许多与开发去中心化应用程序和智能合约相关的任务。
如果你刚刚开始在区块链世界中工作,与我们早些时候一样,正在苦恼于选择哪个:Hardhat 还是 Truffle,那么你来对地方了!! 🥳🥳 在接下来的段落中,我们讨论了这两个框架,并进一步进行了一些小比较。
Hardhat 是一个为开发者提供的 Ethereum development environment,允许执行频繁的任务。
除了部署和运行测试,Hardhat 还提供了一些使其更强大和独特的功能。
让我们逐个考虑这些功能。
Hardhat 自带 Hardhat Network,这是一个为开发设计的本地以太坊网络节点,提供诸如自动错误消息、主网分叉和挖矿模式等多种功能。
所以如果你使用 Hardhat,那么默认情况下你已经在使用 Hardhat Network。它会随着每个接收到的交易按顺序和无延迟地挖掘一个区块。
2. 插件
接下来是插件。
插件,简单来说,就是可以加载在程序上的扩展,以提高其功能。
在 Hardhat 开发中使用的 30+ 插件,这使得它被认为是 Hardhat 的支柱。
我们列出了一些流行插件及其功能如下:
3. 测试
Hardhat 提供了一个非常简单的测试智能合约的程序,允许开发者在构建智能合约时编写自动化测试。
Hardhat 提供了很棒的 文档,用于理解 Hardhat 的测试方法。
如果你是 Hardhat 测试的新手,可以尝试我们之前的 文章,以更好地理解 Hardhat 测试。
与 Hardhat 类似,Truffle 也是一个专为以太坊区块链设计的开发环境。
Truffle 是一个高度流行的开发框架,并且有一个庞大的社区支持该工具。
对于去中心化应用程序的开发,开发者使用 Truffle Suite。
Truffle Suite 是一个为 Web3 开发而设计的 生态系统,由三个不同的工具组成:Truffle、Ganache 和 Drizzle。
除此之外,Ganache 还使开发者在开发过程中避免支付不必要的 gas 费用。
有了这个,前端开发对于开发者来说变得更加容易。
Truffle 提供了几个不同的功能,如:
Truffle 帮助你管理智能合约的工件,以便你可以专注于开发过程的其他部分,减少在文件组织上的时间。
2. 可脚本化的迁移和部署:
使用 Truffle,你可以编写部署脚本,考虑到你的 Dapp 会随时间而变化。
3. 强大的交互式控制台:
Truffle 提供两个不同的控制台以选择最适合你需求的工具。
(A) Truffle 控制台:一个基本的交互式控制台,连接到任何以太坊客户端。要启动控制台,请使用 truffle console
命令。当你加载控制台时,将立即看到以下提示:
Truffle 控制台将让你与已在 EVM 客户端上部署的合约连接,并以类似于 JavaScript 的方式与合约交互。
(B) Truffle Develop:一个交互式控制台,同时启动一个开发区块链。它的作用与 hardhat node
相同。
你可以通过使用 truffle develop
命令轻松启动 Truffle Develop。
4. Truffle Dashboard:
最近,Truffle 推出了 Truffle Dashboard,提供了一种更简单的方式来使用现有的 Metamask 钱包进行部署和交易。使用 Truffle Dashboard 不仅容易,而且是即插即用的。你还可以在任何 Hardhat 项目中使用 Truffle Dashboard。Truffle 提供了很棒的 文档 供你参考和在项目中使用 Truffle Dashboard。
让我们比较一些它们的功能,并给出我们的问题的最终答案!! 💪
Solidity 几乎无法调试。当什么东西出现问题时,你只收到一个错误消息,而且往往很难调试具体出了什么问题。
值得庆幸的是,Hardhat 为 Solidity 引入了一个被称为 console.log 的功能。
所以你可以简单地导入该控制台插件,并可以在你的函数内使用它。
这就是它的样子:
在函数内添加一些 console.log
运行测试时,日志输出将显示:
Hardhat 创建的 EVM 特别支持此功能,因此是 Hardhat Node 的原生功能。仅此一项独特功能便使 Hardhat 成为一个强大的调试工具。
另一方面,Truffle 一直在改进其 调试器,并且也有一些相关插件,但 Hardhat 被认为是一个更易用和强大的调试工具。
Hardhat 默认使用 ethersjs,但可以轻松修改为使用 Web3。而 Truffle 默认使用 Web3 作为开发的插件。
你也可以在 Truffle 中使用 Etherjs,但这被认为更具挑战性和难以实现。
虽然 ethers-js 和 web3-js 相似,但使用 ethers-js 的开发者数量显著增加,这可以提示你在开发时需要/应该考虑什么。
Hardhat 内置 Hardhat Node。然而,它没有提供一个 GUI 让开发者实时查看账户信息。
相反,Truffle 使用 Ganache,需要单独设置。然而,它同时提供 CLI 和 GUI 版本,使开发者更灵活。
如果你更喜欢 GUI,你应该选择 Ganache。
为了部署合约,Hardhat 使用基本的 JavaScript 脚本来 部署,因此更容易入门且相对简单。
而 Truffle 则使用 基于迁移 的部署程序( 这些本身就是 js 文件,但具有顺序执行的特点),对于初学者来说稍微复杂,但在长远考虑你可能会变更部署需求时,这也是有帮助的。
但就便于入门部署而言,Hardhat 无疑更具优势。
在执行各种测试时,Truffle 和 Hardhat 都使用 Chai 断言库以及 Mocha 作为其测试框架,但 Hardhat 还包括 waffle。在测试方面它们都表现良好。
在 Hardhat 发布之前,Web3 是测试智能合约的最受欢迎的框架。
之后,你可以看到趋势随时间变化,Hardhat 比 Truffle 获得了更多的流行度。
根据 NPMJS 统计数据,Truffle 每周下载量几乎为 30,000,而 Hardhat 的每周下载量约为 86,000,是 Truffle 的两倍。
Truffle 的 Github 社区相当活跃和乐于助人,而 Hardhat 提供了一个 Discord 服务器 作为社区支持。需注意,整个 Truffle 产品由 Consensys 支持,因此你可以期望获得“一站式支持服务”。Hardhat 也是由一个组织开发和管理的:Nomic Foundation,并在其 Discord 服务器上提供出色且同样良好的支持系统。
很难说哪一个是最好的。选择 Truffle 还是 Hardhat 归根结底依赖于个人的偏好和使用案例,因为它们都是两个强大的工具。
如果你对这两个框架完全陌生,那么你绝对应该探索它们并决定哪一个最适合“你”。
然而,我们希望这篇文章能够让你对它们之间的差异有更深入的了解,并能够帮助你找到应该使用哪个工具。
告诉我们你更喜欢哪一个框架,可以在 Twitter 上标签我们 @uv_labs
如果你喜欢我们的作品,请给我们点赞。
作者(欢迎反馈):👇
Pari Tomar、Mayon Francis 和 Amateur-Dev
- 原文链接: medium.com/buildbear/har...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!