Blog项目骨架搭建---Go语言(第一阶段)【开源10年项目第3节】

kaiyuan10nian · 2022-03-22 19:14:17 · 1475 次点击 · 预计阅读时间 4 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2022-03-22 19:14:17 的文章,其中的信息可能已经有所发展或是发生改变。

一个深漂近10年的程序员立志用未来10年时间去维护一个项目,这个项目的功能未定,用到什么就做什么,遇到什么就写什么。其主要目的有二,一为加深自己的技术深度,二为其他学习者提供参考。感兴趣的可以跟着我一起做这个项目,不收费、不套路、人间自有真情在。

备注:前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。

地址:https://github.com/kaiyuan10nian/kaiyuan10nian

开源十年项目的更新首发于公众号:计算机自学平台,有兴趣的小伙伴可以持续关注,并欢迎各位加我的微信(kaiyuan10nian)跟我一起完成并推动项目的发展。


今天周六,利用两个多小时的时间把昨天的需求简单梳理了一下,并开始搭建项目,进行了简单的编辑,到目前为止已经实现注册功能了。

这个项目到今天是第三天了,我并不能保证每天都更新日记,但确实每天都会更新项目,时间多久多做点,时间少就少做点,总之这个事情是不可以断的。希望各位也给我助助威,鞭策一下我这颗懒惰的心。

本节主要涉及以下几个知识点:

1)gin web框架

2)viper 配置管理

3)Gorm 数据库连接

这三个知识点我后面单独拉出来介绍,这节仅简单介绍并陈述我都做了什么。

一、选择Gin框架

在 Go语言开发的 Web 框架中,有两款著名 Web 框架分别是 Martini 和 Gin,两款 Web 框架相比较的话,Gin 自己说它比 Martini 要强很多。

Gin 是 Go语言写的一个 web 框架,它具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,非常好的支持中间件和 json。总之在 Go语言开发领域是一款值得好好研究的 Web 框架

gin安装:go get -u http://github.com/gin-gonic/gin

本项目中初始化位置:

img

二、选自viper做配置管理

viper 是一个配置解决方案,拥有丰富的特性:

  • 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件;
  • 可以设置监听配置文件的修改,修改时自动加载新的配置;
  • 从环境变量、命令行选项和io.Reader中读取配置;
  • 从远程配置系统中读取和监听修改,如 etcd/Consul;
  • 代码逻辑中显示设置键值。

Viper安装:go get http://github.com/spf13/viper

本项目中初始化位置:

img

img

根据以上代码可知,我的配置文件放下项目路径/config下,文件为:application.yml。

三、数据库连接使用Gorm库

gorm是go语言的一个orm框架,具体的原理及思想我也介绍不清楚,你只需要知道它是你操作数据库的桥梁即可、

Gorm安装:go get -u http://github.com/jinzhu/gorm

本项目中初始化位置:

img

img

上图中的viper.GetString("datasource.driverName")就是利用前面说过的配置管理viper去配置文件中获取相对应的参数。

具体的配置文件如下:

img

这里留一个小彩蛋,只有在真正运行项目的时候才会发现哦

四、创建数据模型

一共创建了两个数据模型

img

img

这里一共设计到三个知识点

1)gorm.Model这个标记一个结构中有一个结构中没有,那他是用来干什么的呢?其实这就相当于是继承,加上这个后就相当于继承了Model,不加这个代表不继承Model。而Model结构中有以下四个定义好的字段:

img

这是Gorm自带的,所以你清楚这一点就行了。

2)上面Article结构体中有一个uuid.UUID标记,这个是哪里来的?其实是引用自:

uuid"http://github.com/satori/go.uuid"

它的主要功能就是在实际项目中,经常会使用到一个唯一标识的,比如唯一标识一条记录等情况,这个go.uuid项目库就是干这个事情的。

3)在上面Article结构体中还有一个非自带类型:Time,这个是自定义的,其作用就是把时间格式化了而已。如果不格式化的话,它显示的就是时间戳,这个大家应该都知道吧?所以它就是让我们能更方便的查看时间。

五、写了一个接口

账号注册 v1/account/register

img

这节就先开这一个接口吧,点到为止。贪多贪快嚼不烂,我们的目的是掌握开发过程中出现的各个知识点,并不是完成功能的开发。所以大家不要慌尽量把这节的内容摸透咽下去再进行下一步的开发。

下一节安排:

1、Go 项目实战 之 Gin框架的详解

2、Go 项目实战 之 配件管理viper 详解

3、Go 项目实战 之 数据库连接Grom详解

这个项目到目前为止,基本上骨架就出来了,当然项目本身问题还是很多的,我们会在后面一步一步去完善,为的就是在完善中学习。直接一步到位的框架设计只会在外包项目中出现,我们又不赶进度,慢慢来哈。


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1475 次点击  
加入收藏 微博
下一篇:Mutex
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传