以太坊 day(2)

一、环境搭建

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 安装web3@0.20.0

(1)使用npm install --global --production windows-build-tools安装用于编译本地模块所需要的windows编译工具;
(2)使用npm install -g web3@^0.20.0进行web3js的安装

6.3 安装web3@1.6.0

  • 缺少vs
    下载vs2019,记得下载相关的c++的库
  • 设置msvs_version与vs版本对应,我的是2019版本
    npm config set msvs_version 2019
  • 进行下载
    npm i web3@1.0.0-beta.36
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值