随着科技发展,区块链技术逐步走向正轨,本文主要基于以太坊DAPP项目开发环境为对象,将windows下快速搭建环境配置方法予以总结,主要从安装介绍Node.js、geth、solidity编译器、web3和webpack出发,使我们在工作学习中避免安装时出现一些不必要的麻烦,造成开发工作难以进行。
以太坊DAPP开发环境有两种一种是在线开发环境Remix,另一种就是本地开发环境。
Remix:相对于本地开发环境比较简单,它可以直接在solidity(浏览器)里编写、调试智能合约。网页地址:https://remix.ethereum.org/ ,可直接打开。
本地开发环境:需要一个与自己独有业务系统的交互,这就需要DApp进行自己独有业务系统的逻辑编写;环境搭配相当于给与两者建立了一个交互的平台或空间。
1、安装Node.js
进入官网:https://nodejs.org/en/ ,单击“downloads”进入下载页面,我们使用官方长期支持的8.11.1LTS版本,根据自己计算机操作系统配置选择相应的安装包,32位安装包既可用于32位系统,也可用于64位系统。如果您确认自己操作系统是64位,也可直接下载安装64位安装包。
下载完成后可直接安装。安装完毕,打开一个控制台窗口,可以使用node了:
安装后检测PATH环境变量是否配置了Node.js,点击开始=》运行=》输入"cmd"=>输入命令"path",输出如下结果:
我们可以看到环境变量中已经包含了D:Program Filesodejs,检查Node.js和npm版本,直接在命令行中输入“node -v”和“npm –v”,如图:
2、安装Geth
Geth是以太坊协议的具体落地实现,通过Geth,你可以实现以太坊的各种功能,如账户的新建编辑删除,开启挖矿,ether币的转移,智能合约的部署和执行等。目前下载安装V1.8.7版本。
安装完成后检查,输入geth version,产看是否安装成功;
如果出现Geth的版本号,那么恭喜你,geth安装成功!
3、安装 solidity编译器
基于浏览器的Solidity:
如果你只想尝试一个使用Solidity的小合约,那么就不需要安装任何东西,只要访问基于浏览器的Solidity。
如果你想要离线使用(下载地址:https://cmake.org/download/ v3.11.1版本),那么你可以把页面保存至本地,或者从或者从http://github.com/chriseth/browser-solidity克隆一个。
NPM/node.js在基于浏览器的Solidity上,Emscripten提供了一个跨平台JavaScript库,把C++源码编译为JavaScript,同时提供了NPM安装包。这可能是安装Solidity到本地最简单省事的方法了。
安装完毕后输入solcjs –version。如果出现Emscripten.clang,说明你安装成功。
4、Web3安装
Web3的安装过程使用了git,因此需要先安装 windows 版的git命令行。下载64位或32位的git安装程序,本地安装后在继续安装web3。
npm install –g web3@0.20.2
安装验证:输入node –p 'require("web3")'{[Function: Web3]providers:{…}}
5、webpack
Webpack借用官方说法:
“webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.”
简言之,webpack是一个模块打包器 (module bundler),能够将任何资源如 JavaScript文件、CSS文件、图片等打包成一个或少数文件。
为什么要用这个Webpack?
首先,定义已经说明了webpack能将多个资源模块打包成一个或少数文件,这意味着与以往的发起多个HTTP请求来获得资源相比,现在只需要发起少量的HTTP请求。
其次,webpack能将你的资源转换为最适合浏览器的“格式”,提升应用性能。比如只引用被应用使用的资源(剔除未被使用的代码),懒加载资源(只在需要的时候才加载相应的资源)。
再次,对于开发阶段,webpack也提供了实时加载和热加载的功能,大大地节省了开发时间。除此之外,还有许多优秀之处之处值得去挖掘。不过,webpack最核心的还是打包的功能。
具体架构还需仔细剖析解读,继续Webpack多页应用架构可以更加广泛的呈现出精彩的内容。但是架构不是一成不变的,在不断革新和迭代中逐渐趋于完善,解决一些架构中的痛点。