记录一次goweb项目的问题
LYT
首页
分类
标签
项目
留言
友链
关于

记录一次goweb项目的问题

2022年8月29日18时52分
2022年8月29日19时52分
golang
golang gorm gin MariaDB
浏览量:
总浏览量:
0

前言

我在7月底,用go重构了我之前用javaweb做的一个记单词的app用来辅助记考研考纲词汇,主要是因为之前那个项目把一些东西写死了,扩展性很差。而我又需要对考研真题的生词进行记忆,而且我又刚好浅学了以下go语言,然后想着就用go来重构这个项目。

问题

我这个项目搁置了一段时间没用,因为真题里面不认识的单词其实不多,我一般都是累计个50-60个才开始记,结果我发现在使用的时候莫名报错,去后台看发现是从session上获取的数据为null,因为go用的第三方的session,并没有自己原生的session,而这个session感觉用起来没有java的顺手,而且它数据量大了过几分钟就会出毛病。

image-20220829210433327

image-20220829210456026

解决办法

由于我现在备战考研,时间非常紧张,所以干脆换了一种形式代替session,那就是读写json文件,这里给出了读写json文件封装的函数

接受数据的结构体

package model var TableName string type Word struct { Chinese string English string } func SetName(name string) { TableName = name } func (Word) TableName() string { return TableName }

读取文件函数

func Read() []model.Word { filePtr, err := os.Open("./info.json") if err != nil { fmt.Println("文件打开失败 [Err:%s]", err.Error()) } defer filePtr.Close() var list []model.Word // 创建json解码器 decoder := json.NewDecoder(filePtr) err = decoder.Decode(&list) if err != nil { fmt.Println("解码失败", err.Error()) } else { fmt.Println("解码成功") } return list }

写入文件函数

此时,如果写入数据,那么就会覆盖掉原有的数据

func Write(list []model.Word) { // 创建文件 filePtr, err := os.Create("info.json") if err != nil { fmt.Println("文件创建失败", err.Error()) return } defer filePtr.Close() // 创建json解码器 encoder := json.NewEncoder(filePtr) err = encoder.Encode(&list) if err != nil { fmt.Println("解码失败", err.Error()) } else { fmt.Println("解码成功") } }

前后比较

由于是又一次重构项目,我还是选择了前后端分离的形式,诚然gin有很好的模板渲染引擎,但是使用Vue+axios不仅能够提升运行速度,而且可以用elementUI组件使得页面更加漂亮,再一次强调,goweb项目打包上线是真的太方便了!!!!!!

image-20220829211617444