前言

最近收到朋友的催更,花了一周左右把 go-Cureword 的进度给赶完了

这篇博客用来记录我这期间踩过的所有坑,解决方法,以及心得

因为是工程写完之后来统计的 可能会有特别多的疏漏

鸡汤站地址:

Cureword v2 心灵鸡汤

工程开源地址:

前端: github.com/…/cureword.top
后端: github.com/…/go-cureword

坑🕳

  1. Vue.js — axios 通过POST方式传输的json是Request Payload

    搜罗了一堆东西,最后发现只要你请求头是 Content-Type: application/json貌似Golang就能读取出来…

  2. 生成API接口文档

    最开始使用的是APIPost/Postman的生成方法,但是这两个软件生成出来的文档夹带太多私货(指广告),后来就使用了apidoc进行生成

    APIDOC 可以读取源码的注释 进行生成api文档

  3. Go net/http 处理静态文件

    生成出来的api文档是一个文件夹,带静态文件,需要一并搭载出来

    解决方法:

1
http.Handle("/", http.FileServer(http.Dir("/xxx/")))

刚开始这个方法貌似用不了,调试了很久又发现能用了,盲猜浏览器缓存的锅

(这个方法真的是简单粗暴方便)

  1. Go []byte 与 json 互相转换方法(搜索次数多)

1
2
b, _ := json.Marshal(m)//将json对象序列化为byte[]
json.Unmarshal(b,&ki)//将序列化的byte[]重写反序列化为对象。
  1. Gorm 指定struct对应的表名

1
2
3
4
5
6
7
8
9
10
   type Article struct {
Id uint32 `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
}
func (Article) TableName() string {
//实现TableName接口,以达到结构体和表对应,如果不实现该接口,并未设置全局表名禁用复数,gorm会自动扩展表名为articles(结构体+s)
return "it_article"
}
// 后记:貌似直接使用db.Table("表名")指定即可
  1. axios 相应后执行的函数无法使用element-ui的函数(this指向有变化)

    原使用方法

1
2
3
4
axios
.get("host")
.then(function(res){})
.catch(...)

现使用方法

1
2
3
4
axios
.get("host")
.then((res)=>{})
.catch(...)

原因:function(res){this.xxx}(res)=>{this.xxx} 中的 this的指向是不同的,箭头函数并不简单是匿名函数的简写。

在JS中,箭头函数并不是简单的function(){}匿名函数的简写语法糖,实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,在编写函数时就已经确定了。而匿名函数的this指向运行时实际调用该方法的对象,无法在编写函数时确定。

  1. vue router 刷新后无法定位路由

router/index.js中的 modehistory改为 hash即可

  1. 使用https时的证书问题

    最后放弃了https,全站使用http

Wakatime

前往Wakatime查看 go-Cureword 编写时所需的时长

我才发现这玩意快写了30个小时了…

API

获取API请前往爱发电进行充电,充电一次获取1个月API使用权限