第 7 期:依赖与模块
录制时间: 2021-08-29
本期摘要:这是 Go 夜聊的第七期节目,我们和 goproxy.cn 的作者在 Go 1.17 发布时聊了聊在 Go 语言中的依赖管理、模块等相关的机制。Go 语言中的 Modules 走到今天这一步经历了哪些波折?看似在其他语言里早已攻克的代码依赖管理,在 Go 语言的情景下,又有哪些不为人知的努力?
时间线
- 00:00 开场白
- 01:06 接触 Go 语言的契机
- 02:57 Beego 等一系列 Web 框架的对比
- 04:37 自己动手写 Web 框架
- 06:33 Go Modules 之前的依赖管理
- 16:12 Monorepo 代码管理的优劣
- 22:24 “臭名昭著” 的 GOPATH 和 vendor
- 28:36 dep 的风波
- 37:46 “独裁式” 管理风格下的需求工程
- 43:52 进入 Go Module 时代
- 46:47 Go Modules 的基本原理
- 52:40 godoc 和 pkg.go.dev
- 54:57 从 golang.org 合并到 go.dev 域名
- 66:22 Go Modules 的最小版本选择算法 MVS
- 70:27 环境变量 GOPRIVATE
- 72:25 模块的懒加载
- 77:36 模块别名机制
- 82:10 GOPATH 的废除与 Go 1 兼容性保证
- 84:43 Go Workspace 工作区
- 86:17 构建 goproxy.cn 的经历
- 89:57 搭建代理的难点及其与镜像站的区别
- 96:42 七牛云接管 goproxy.cn 的运营
相关链接
- 谢大 astaxie 写的 Beego
- 知名 Web 框架 Gin
- 曾经的知名 Web 框架 Martini
- 知名 Web 框架 Echo
- 傲飞 aofei 写的 Web 框架 air
- 标准库 net/http
- 曾经的依赖管理工具 goven
- gopkg.in
- yaml 包
- 无闻编写的 ini 解析包
- 曾经的依赖管理工具 gopm
- 曾经的依赖管理工具 govendor
- 曾经的依赖管理工具 dep
- Russ Cox 关于 vgo 依赖管理的演讲
- Go Modules 的前身 vgo
- Go Modules 规范
- Russ Cox 和 Rob Pike 开发的 licensecheck
- 模块功能目前的主要开发者 Bryan C. Mills
- 傲飞开发的 Go 模块代理站 goproxy.cn
- 李保坤开发的 Go 模块代理站 goproxy.io
- 曾经的文包文档站 godoc.org 的源码
- Go 语言的多模块工作区 Workspace 的提案
- 模块别名功能的相关讨论
- 尾声推荐:jellyfin.org
- 嘉宾推荐:The Art of Multiprocessor Programming (2nd Edition)
- 嘉宾推荐:golang.design/go2generics