古老的榕树

用 Go 开发终端接口服务--准备项目所需的 Go 类包

发表 2019-05-14 16:13 阅读(774)
我们选择第三方类包,主要是为了方便快速开发,把主要精力放在业务流程上,为了避免走弯路,我们坚持选择稳定、符合 Go 语言哲学、开发团队活跃的类包作为优先选包原则。下面将罗列我们项目用到的第三方类包,并简单说明用途和特征。

github.com/codegangsta/gin 
**gin 用途**:开发环境自动热编译部署工具,方便开发使用,只需启动一次,代码一旦有变动,gin 都会自动增量编译,省去每次修改代码都要手动重启的麻烦,需全局安装。


github.com/golang/dep
**dep 用途**:Go 的依赖管理工具,类似 Java 界的 Maven,它可以让项目依赖某个版本的第三方库,把第三方库文件都集中下载在根目录 vendor 文件夹里,需全局安装。


gitub.com/urfave/negroni 
**negroni  用途**: 非常 nice 非常地道的 Http 类包,它扩展了 Go 内置 `net/http` Handlers 处理器,它继承了 Go  web 开发所推崇的方式,我们整个项目都是基于 negroni 做项目骨架结构的。


github.com/go-sql-driver/mysql 
**go-sql-driver 用途**:MySQL 数据库驱动类包,连接 MySQL 数据库必备的库。


github.com/jmoiron/sqlx 
**sqlx 用途**:轻量的 SQL 操作类包,开发者出自于大猩猩团队成员的,特点是轻量,高性能,可扩展,它很巧妙地扩展了 Go 内置 database/sql 库所没有的东西,熟悉 database/sql 的同学,再用 sqlx 就如鱼得水。


github.com/elgris/sqrl  
**sqrl  用途**:生成动态 SQL 语句类包,它是 squirrel 的一个分支,着重去掉了线程同步的特点,优化了性能,像使用 ORM 一样生成 sql 语句和对应参数,对条件判断的数据访问,特别有用。它和 sqlx  是绝配。


github.com/unrolled/render 
**render 用途**:Web 响应输出 JSON、HTML、XML、TEXT 绝佳的类包,服务接口快速输出 JSON 必不可少的。


github.com/robfig/config 
**config 用途**:配置文件读写类包,项目配置一些可变的关键参数,需要写在程序外面,这时需要它读取配置文件的属性,传递给程序,也可以多个配置文件读取再写入合并文件,非常方面快捷的第三方库。


github.com/sirupsen/logrus
**logrus 用途**:功能完善的分级别日志类包,可以定制格式和属性,打印一些错误信息和调试信息。


github.com/disintegration/imaging 
**imaging  用途**:图片处理类包,它可以缩放,裁剪,反转,压缩图片,改变图片模式等,它让图片处理工作变得异常方便,省去写一堆复杂的算法程序。


以上列出的类包,都是项目业务用到的,除了 gin 和 dep,其他推荐使用 dep 方式安装。dep 的使用,也是很简单的,下面列出需要掌握的基本指令:
# 新建了项目文件夹之后,只需要执行以下指令,即可初始化 dep,让项目通过 dep 管理。
dep init
# 执行完毕,项目文件夹里多出了 Gopkg.lock Gopkg.toml vendor 两个文件和一个文件夹
# 以后项目依赖的第三方包,都会存在在 vendor 文件夹里。

# 查看 dep 的版本
dep version
# 依赖管理帮助
dep help ensure
# 添加一条依赖
dep ensure -add github.com/urfave/negroni 
# 这里 @= 参数指定的是 某个 tag
dep ensure -add github.com/urfave/negroni@=1.0.0
# 添加后一定记住执行 确保 同步
dep ensure -v
#  删除没有用到的 package
dep prune -v

这种 dep 安装方式和 go get 全局安装有点区别,全局安装文件都安装在 GOPATH 里的,所有的项目都共享使用,而 dep 方式安装的类包,都存放在自身项目 vendor 文件夹下,只有该项目才能用,与其他项目完全隔离,互不影响。本教程除了 dep gin 我们需要全局的安装之外,其他的包都建议使用了 dep 方式安装。

小结

读者如果觉得学习阶段,没有太多的项目,没有必要使用 dep 管理第三方类包,直接使用 go get 安装,也是可以的,本身 dep 也不是强制规定,使用 dep 安装只是一个友善建议,随着你的开发经验不断增长,参与的项目越来越多,特别是遇到开发多个项目的时候,或项目依赖第三方类包的某些版本的时候,你就发现 dep 安装方式的好处来了。



《用 Go 开发终端接口服务》 目录


Donate

如果文章对您有帮助,请使用手机支付宝扫描二维码,捐赠X元,作者离不开读者的支持!