问题描述:
相信做过solidity智能合约开发的小伙伴们应该都用过在线Remix编辑器。不可否认它是目前来看最方便快捷且功能强大的在线编辑器。
但是Remix也不是完美的,在使用中我们也遇到了很多问题:
1.本地文件的import不灵活,虽然可以批量导入,但是却不能将多个文件夹下的问题同时导入(无法导入文件夹)。
2.文件目录管理难,大型的dapp项目合约也是要有合理的结构的。虽然最新版本支持Create Folder,但是当我们想要移动文件到另一个目录时却办不到。
3.编辑器加载慢,因为Remix服务器在国外,所以导致每次打开Remix都需要花费很长时间,有时候甚至会出现插件加载失败的情况。
4.无法本地保存,所以Remix支持缓存在浏览器内。 但是我们知道,保存在本地硬盘才是数据保存在安全的方式。
虽然以太坊生态的不断完善,现在已经有了新的解决方案。
Remix IDE(本地)+ Remixd
Remix IDE
项目源码:https://github.com/ethereum/remix-project
介绍: Remix是一个本地部署运行,基于浏览器的编译器和IDE,允许用户使用Solidity语言构建以太坊合约并调试交易。说白了就是一个本地版本的Remix。
Remixd
项目源码:https://github.com/ethereum/remixd
介绍:remixd是一个打算与Remix IDE (aka)一起使用的工具。Browser-Solidity)。它允许在Remix IDE (web应用程序)和本地计算机之间建立websocket连接。实际上Remix IDE使可由remixd共享的文件夹。
说白了就一个提供本地文件目录与Remix IDE链接的服务。
部署流程
Remix IDE
推荐使用Docker, 快速部署,两行命令就搞定,但是前提是本地要有Docker环境。
Windows的就很简单了,我就不多介绍了。
我是基于Windows 10环境下操作的,但是命令都是通用的
1.拉取docker镜像
docker pull remixproject/remix-ide:latest
镜像拉取完成后,执行run命令
2.执行docker run
docker run -p 10330:80 remixproject/remix-ide:latest
#10330是本地运行的端口号
这边表示镜像已经启动完毕,我们可以打开浏览器,进入 http://localhost:10330/ 就可以进入Remix编辑器了
那么我们的Remix-IDE已经部署完成,现在我们来部署Remixd,并完成本地文件链接测试
Remixd
Remixd需要node 和 npm环境。部署npm的方法文章也很多,我就不介绍了。
1.拉取源文件
npm install -g remixd
2.启动remixd服务
在驱动Remixd前建议新建一个文件夹作为Remixd链接根目录
我是在我的E盘新建了一个 remix-data文件夹
并执行
mkdir remix-data
cd .\remix-data\ #切换到remix-data目录
remixd -s ./ --remix-ide http://localhost:10330
#启动remixd服务
# ./ 表示当前目录(remix-data)为根目录
# http://localhost:10330是指 Remix IDE 连接地址
这里Remixd服务启动成功。
我们可以看到给了我们提示,Remix IDE必须运行在我们制定的链接地址,且Remixd 监听了我们本地的65520端口,这是一个Websockt服务。
接下来我们就是做一个简单 Remix IDE 连接 Remixd服务的工作
连接
这里我们可以看到,在文件浏览器内有一个localhost目录。 这里既是我们的本地目录。
因为我当前目录下并没有存放任何的文件,所以是空的。接下来我们来添加一份ERC20合约并测试。
测试
1.我现在本地目录放了一个ERC20.sol文件
2.点击 localhost目录 收放按钮,即可刷新目录
这里我们看到我的合约文件已经能看到了。
接下来我们尝试编译
编译完成。
总结
Remix-IDE + Remixd的黄金组合可以很方便的为我们搭建一套本地的Solidity IDE环境,也解决了我们刚刚所提到在线编辑器所不能解决的诸多问题。
tips:
1.在Remix IDE内删除合约会删除掉本地关联的合约
2.改变当前合约目录结构在本地文件目录管理即可
不会用Remix IDE的同学可以参考我以前写过的一篇博文《以太坊开发入门,Remix IDE使用及简单的合约部署》, 所以是1年前的文章,界面有所变化,但是大同小异
有问题,或者建议请留言,谢谢。