一、环境搭建
1.1 下载node.js插件
1.2 配置node.js语言检查
二、基础语法
2.1 let和const
- let允许修改,不允许重定义
- const不允许修改
let a = 10;
const b = 'hello';
console.log('a:',a);
console.log('b:',b);
2.2 解析构造
//对数组进行解构
let array= [1,2,3,4,5];
let [a,b,c] = array;
console.log(a,b,c);
//对结构体进行解构
const people = {
name:"jack",
age:12,
address:"西安",
};
let {
name, age} = people;
console.log(name,age);
2.3 箭头函数
//箭头函数
let add = (a, b) =>a + b;
let num = add(3,4);
console.log(num)
//函数默认值
function title(name, address = "西安"){
console.log(`name:${name},address:${address}`);
}
title("jack");
2.4 class
class people{
constructor(name, age) {
this.name = name;
this.age = age;
}
show(){
console.log(`name:${this.name},age:${this.age}`)
}
}
class student extends people{
constructor(name, age) {
super(name, age);
this.name = name;
this.age = age;
}
show(){
console.log(`这个name:${this.name},这个age:${this.age}`)
}
}
let peo = new people("jack",12)
peo.show();
let stud = new student("jack",12)
stud.show();
2.5 不同模块间函数的调用
- helloword.js
function showname(){
console.log("jack")
}
function showage(){
console.log("26")
}
module.exports = ex = {
showname,
showage,
}
- test.js
let ex = require('./helloword')
ex.showname();
ex.showage();
console.log(address)
2.6 path模块
let path = require('path')
let file = "C:\\Program Files\\Internet Explorer\\images\\mytest.doc"
console.log(path.dirname(file))
console.log(path.basename(file))
console.log(path.extname(file))
console.log(path.normalize(file))
console.log(path.join("c://test//document", "//mydog"))
//resolve:基于当前路径返回目录文件的路径
console.log(path.resolve("test.js"))
2.7 fs模块
let fs = require("fs")
//同步读取文件
let data = fs.readFileSync("./helloword.js")
console.log(data.toString())
//同步写文件
fs.writeFileSync("./test2.js",data)
console.log("同步写文件结束")
//异步写文件
fs.writeFile("./helloword1.js",data.toString(),(res) =>{
if(res){
console.log("异步写文件出错")
}
console.log("异步写文件成功")
})
//删除文件
//fs.unlinkSync("./helloword.js")
//查看文件的stat信息
let stat = fs.statSync("./test2.js")
console.log(stat.atime)
2.8 封装到promise中
let fs = require("fs")
let readFile = new Promise(function (resolve, reject) {
fs.readFile("./helloword.js","utf-8",(err,data) =>{
if(err){
reject(err)
}
resolve(data)
})
})
readFile.then(data =>{
console.log(data)
}).catch(err =>{
console.log(err)
})
2.9 async,await,promise联合使用
- 使一些异步调用通过同步调用的形式展示出来。
let getData = (readFilename) => {
return new Promise(function (resolve, reject) {
fs.readFile(readFilename, 'utf-8', (err, data) => {
if (err) {
reject(err)
} else {
resolve(data)
}
})
})
}
let writeData = (writeFilename, data) => {
return new Promise(function (resolve, reject) {
fs.writeFile(writeFilename, 'utf-8', (err, data) => {
if (err) {
reject(err)
} else {
resolve(data)
}
})
})
}
let getStat = (writeFilename) => {
return new Promise(function (resolve, reject) {
fs.stat(writeFilename, (err, stat) => {
if (err) {
reject(err)
} else {
resolve(stat)
}
})
})
}
let finalExecute = async() => {
let data = await getData("./helloword.js")
let result = await writeData("./newHello.js", data)
let stat = await getStat("./newHello.js")
console.log(stat)
}
finalExecute()
三、实战开发
3.1 安装编译器
$ npm install --save solc@0.4.26
3.2 npm
- json parse field…@solc
npm cache clean --force
3.3 npm i cnpm
- cnpm,中国npm镜像的客户端
3.4 npm i web3
- 安装指定版本的web3
npm install web3@0.2
3.5 npm init
3.6 npm install web3 --save
3.7 遇见json paresefailed
3.8 node
fs[enter],可以查看fs相关的函数
npm cache clean --force
四、goland实现合约
4.1合约调用过程
4.2 合约过程
- 编译合约
- 部署合约
- 获取合约实例
- 与合约进行交互
4.3 编译合约
let solc = require('solc')
let fs = require('fs')
let sourcecode = fs.readFileSync('./contracts/helloname.sol','utf-8')
console.log(sourcecode.toString())
let output = solc.compile(sourcecode, 1)
console.log(output)
module.exports = output['contracts'][':SimpleStorage']
五、出现的错误
5.1 compile一直出错
更换solc的版本,0.4.26
5.6
六、需要下载的包
6.1 npm install create-react-app -g
6.2 安装[email protected]
(1)使用npm install --global --production windows-build-tools安装用于编译本地模块所需要的windows编译工具;
(2)使用npm install -g web3@^0.20.0进行web3js的安装
6.3 安装[email protected]
- 缺少vs
下载vs2019,记得下载相关的c++的库 - 设置msvs_version与vs版本对应,我的是2019版本
npm config set msvs_version 2019 - 进行下载
npm i [email protected]