关注开发者的幸福
几个月前,我在Golang开始了我的旅程,当时我认为 JavaScript 变得有点太笨拙了,我不喜欢。 TypeScript 解决了一些问题,但它使 JavaScript 像 Java 一样冗长。无论如何,我已经编写 JavaScript 近五年了,我认为用不同的思维模型和开发范式学习一门不同的语言会很好。
GOPATH
我一直在寻找可以让我复制在开发中运行 Golang 服务的便利性的工具,就像我可以基于 Node.js 的应用程序一样,但我发现没有一个适合我的需求,所以我决定创建一。
它使用解决环境和版本管理问题的 Docker 运行,并使用 Makefiles 作为工具,它以图像的形式出现,基本上包含简单的 shell 脚本,有助于:
-
引导一个项目
-
测试和应用程序的实时重新加载
-
依赖的自动更新
4.静态链接二进制编译
5.打包成一个scratch Docker镜像
我称之为 Go Develop,你可以在我的 GitHub 存储库中找到它:
zephinzer/golang-dev_通过在 GitHub 上创建帐户,为 zephinzer/golang-dev 开发做出贡献。_github.com
下面是一篇简短的文章,讲述了我的经历,以及这个项目如何解决我在开始进入 Golang 世界时遇到的问题。
作为我尝试复制的环境的参考,我使用以下 JavaScript 工具来提高我的工作效率:
1.NVM用于管理节点版本
2.Yarn用于管理依赖
3.Nodemon用于实时重新加载我的应用程序和测试
4.ESLint + Prettier用于自动代码格式化和实时 linting
5.Docker 多阶段构建用于打包和部署应用程序
助力 Go 项目
当谈到引导任何项目时,它通常归结为几件事:
go modgo mod
init
管理 Go 版本
xVMxGOPATHlinkthis
请不要使用 $GOPATH · 问题 #189 · moovweb/gvm_当我切换到不同版本的 Go 时,我不想改变我的 $GOPATH。 $去版本>去版本go1.4.3..._github.com
使用 Docker,我们甚至不需要在您的机器上安装 Golang。只需参考我们希望拥有的 Golang 版本并开始使用! (Go Develop 从 1.11.2 开始,如果需要更早的 1.11.x 版本,我会添加对它们的支持 — 在 GitHub 上给我一个 Issue)。
GOPATH
代码自动格式化
像许多从事网络相关软件工作的人一样,我将Visual Studio Code称为我选择的 IDE,它已经有一个非常不错的插件,只需在您的市场中搜索“go”!
gofmt
应用程序的实时重新加载
nodemongo test
go modgo.mod
** 在 windows 下使用 go mod 无法使用 go1.11 执行 @104。 · 问题 #217 · oxequa/realize**_directory: -- main.go -- go.mod main.go: package main import "fmt" func main() { fmt.Println("hello") } start implementation... _github.com
100064 inotifywait 100065 100063*.go
实时重新加载测试
现有的工具也不适合实时重新加载测试。GoConvey听起来很棒 — 除了我不想切换到浏览器来查看我的测试结果。我更像是一个 CLI 人。 GoConvey具有用于自动重新加载测试的 CLI 模式,但是,失败不会将错误日志转储到终端,这对我来说很烦人。
inotifywait
自动更新依赖
import
go mod
go modgo mod
二进制编译和生产打包
大多数用 Go 编写的应用程序似乎注定要打包为 Docker 映像。在我的工作中,我也必须这样做。那么,为什么不构建包含包含电池的构建机制的东西呢?
build
GOOSGOARCH
遗言
我希望这个项目像我自己一样有益于其他人 — 它获得了许可的 MIT 许可证,因此您几乎可以用它做任何您想做的事情。
如果它在某种程度上对您有所帮助,请帮我一个忙,并为存储库加注星标/观看,以表明您发现它对您的开发人员之旅有益。也非常欢迎提供反馈(我仍然是 Go 的新手,对我所做的工具的任何改进都会有所帮助!)
你可以在 DockerHub 上找到 Docker 镜像:
Docker Hub_编辑描述_hub.docker.com
谢谢阅读!
最后,我的工作团队正在扩大,如果您常驻新加坡并希望与我进行专业合作,请随时致电[电子邮件保护](: