关于Go语言想说的很多,从2019年开始体验试水公司第一款项目,再到慢慢用Go语言开发各种各样的脚本,语言能说的优势千千万,每个人的理解也不同,但是真实踩坑后也许会大彻大悟,其他语言也不尽相同,但是实打实验到Go的开发带来的好处,以及对项目优化和对减轻项目的维护成本上,我还是很推荐;
开始正题
这篇文章也是积累个把月的总结,将公司新业务方向的技术栈,由原来的PHP7+Vue2的技术栈升级为Go1.18+Vue3,其一是新业务项的需求,面向2c领域,不同于以往的2b方式,对系统性能有更高的挑战,二者也是对经历过大量的小项目训练,是时候该进行大项目的跳跃实战,这个阶段,主要针对Go工程化进行了深入调研以及Vue3的基础调研;
Go的开发优势
还是要提一下语言的优势
- 编译速度快
- 执行速度快
- 单一二进制文件,部署简单
- 好棒的工具集,自带的标准库超级强大
- 内置并发,内存占用少,单协程最小2K
- interface 很棒
- 跨平台 Easy
- 自带的格式统一,gofmt工具
- 内置runtime,自动GC
- 静态语言,对比PHP、Python属于动态语言,即脚本语言
前端架构
前端沿用Vue技术路线,升级为Vue3,采用灵活的AntDesignVue组件库作为支撑,以及相关技术栈,由同事完成,期间进行过功能沟通、文档规范、以及工程化思想沟通,才凝练如下结构图;
后端架构
后端切换Go1.18,配合Gin框架,引入toml配置文件,casbin权限管理,zerolog日志管理,gin静态文件绑定器、中间件使用,validator参数校验翻译等,然后引入依赖注入wire,数据库实例封装,用gorm v2版本,并将go工程化为:model模型、dao服务、dao接口服务、service服务、controller服务,制定response接口规范,跨域请求的配置;
结构图如下:
前后端整体架构展示基础雏形,随着项目的不断迭代开发,会引入更多的方式,如Go泛型、Go接口化编程、容器服务、ES缓存、Redis缓存、数据库表优化等,需要不断的拓展业务方式;