将近一个月没有更新博客了,主要还是因为道心破了,实在是没有什么动力学习了。二十多天里,试着考了几天研,也试着工作考研两手抓。考虑了很久,还是觉得要提升代码能力,找了一个新的开源项目,不像之前一样每天跟着教程写了,试着能不能自己把别人的代码看懂吃透。
这里插一句,道心破了主要是因为在后面的几场面试里总是达不到想要的效果,说话磕磕巴巴,问项目就回答的含糊不清,也不怪面试官给我秒挂,太不自信了,再沉淀一段时间吧,只能寄希望于秋招了。
项目结构
1 2 3 4
| ├── deploy: 部署相关的文件 ├── docs: 项目文档 ├── server: 后端代码 └── web: 前端代码
|
项目分为两个部分,使用 vue 框架的前端部分和使用 gin 框架的后端部分,前端部分在web
目录下,后端部分在server
目录下。由于我对前端的内容不是很了解,所以主要关注 server
后端部分。了解一下目前 github 排名第一的 golang admin 项目是怎么设计的。
后端结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| ├── api │ └── v1: v1 版本的 api,相当于java中的 controller ├── config: 配置类,包括数据库配置,jwt 配置,redis 配置等 ├── core │ └── internal: 服务启动方法 ├── docs: swagger 文档 ├── global: 全局对象 ├── initialize │ └── internal: 初始化方法,日志,数据库,redis,jwt,定时任务等 ├── middleware: 中间件,包括跨域,jwt,casbin,日志,全局异常处理等,使用了 gin.handleFunc 的特性 ├── model: 数据库模型,请求参数,响应参数 │ ├── common │ └── system ├── packfile ├── plugin: │ ├── email: email 插件,是个完整的小项目,里面结构和外部类似 │ ├── plugin-tool: │ └── ws ├── resource: 资源文件,包括自动生成代码的模板,页面模板,插件模板等 │ ├── autocode_template: 代码模板,从结构体生成代码 │ ├── page: 前端静态资源 │ └── plug_template: 插件代码模板 ├── router:路由代码 │ └── system: ├── service: 业务代码,相当于 java 中的 service │ └── system ├── source: 数据库的初始数据 │ └── system └── utils: 公共的工具类 ├── captcha ├── plugin ├── timer └── upload
|
本文是总结篇,提前写是想要有条理一点。下面是代码的主函数,我计划从主函数开始,一行一行地写一遍完整的项目,实在找不到相关的教程,所以学习的过程应该会比较艰辛,希望自己能够坚持下来吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| func main() { global.GVA_VP = core.Viper() initialize.OtherInit() global.GVA_LOG = core.Zap() zap.ReplaceGlobals(global.GVA_LOG) global.GVA_DB = initialize.Gorm() initialize.Timer() initialize.DBList() if global.GVA_DB != nil { initialize.RegisterTables() db, _ := global.GVA_DB.DB() defer db.Close() } core.RunWindowsServer() }
|
学习收获
Go语言库: