Golang Go语言中Vgo-适合初学者的开源框架
Vgo
介绍 📖
Vgo 一款基于 Gin 开源的服务端框架,使用了 Redis 、Mysql 、JWT 、队列、等技术栈。 非常适合 Golang 初学者作为学习项目学习。
代码仓库 ⭐
- Vgo-Gitee: https://gitee.com/yan_chunhao_admin/vgo.git
- VgoAdmin-Gitee: https://gitee.com/yan_chunhao_admin/vgo-admin.git
安装使用步骤 📔
- Clone:
git clone -b dev https://gitee.com/yan_chunhao_admin/vgo.git
- Install:
mysql 8 导入根目录 sql 、准备好 redis
go mod tidy
- Run:
go run main.go
项目目录 📚
Vgo
├─ app # Vite 配置项
├─ AdminUser # 模块
│ ├─ Bapi # Bapi 后台接口
│ ├─ Api # Api 前台接口
│ ├─ Model # Model 模型
│ ├─ Router # Router 路由
├─ bootstrap # 框架启动文件
├─ core # 框架核心文件
│ ├─ ...
├─ job # 队列
├─ route # 路由
├─ storage # 日志或静态资源
│ ├─ logs # 日志
├─ asynq.yml # asynq 配置文件
├─ config.yaml # 框架配置文件
其他功能还在实现 🏗
敬请期待...
Golang Go语言中Vgo-适合初学者的开源框架
gitee.com
…
AdminUser
- Router
bootstrap
route
asynq.yml
config.yaml
怎么看怎么像是写 java 写的。
纯路人,建议先统一风格再玩开源。
有种 spring cloud 的既视感 …
用 gitee 一律排除
go 好像这种脚手架不少了,最近再 v 站就看到很多,不过感觉在大模型补全那么智能的情况下,这种脚手架没那么有吸引力了。
gitee… 为啥,就因为不用科学上网么,不至于吧?
不知道为啥,看到 gitee 我也顿时失去兴趣了
现在大模型还没智能到按要求生成类似脚手架可以一键生成完整的代码,以后可能会有。
哈哈哈
下一版会发到 github
嗯啊呗
我不会 java ,哈哈哈
怎么说,感觉一股浓浓的 laravel 味儿。
拿 route 给你提一个小小的建议吧,我觉得可能要比你在 route.go 注册路由可能要方便一些,尤其后台,几百个路由都是稀松平常,到后期注册路由会非常不方便。
我觉得把注册的逻辑交给 controller ,然后全部挂到一个 controller 集合的结构体上,再通过反射实现注册路由,可能会比你现在方便一些,当然也有可能是因为我用 wire 才会方便,反正就是个小建议,供你参考。GO<br>// controller.go 的 wire provider ,这是我的逻辑,不用 wire 的话手动注入各个 controller 到 Controller struct 中也是一样<br>var ControllerProviderSet = wire.NewSet(<br> wire.Struct(new(Controller), "*"),<br> NewUserController,<br> NewRouteRegistrar,<br>)<br><br>// controller.go<br>type Controller struct {<br> User *UserController<br>}<br><br>type setupable interface {<br> setup(engine *gin.Engine)<br>}<br><br>var _ server.Routes = (*Controller)(nil)<br><br>func (c Controller) SetupRoutes(engine *gin.Engine) {<br> ref := reflect.ValueOf(c)<br> <br> for i := 0; i < ref.NumField(); i++ {<br> iterateField := ref.Field(i)<br> if iterateField.Kind() == reflect.Ptr {<br> iterateField = iterateField.Elem()<br> }<br> if iterateField.Kind() != reflect.Struct {<br> continue<br> }<br> if !iterateField.CanInterface() || iterateField.Interface() == nil {<br> continue<br> }<br> iterateController, ok := iterateField.Interface().(setupable)<br> if !ok {<br> continue<br> }<br> iterateController.setup(engine)<br> }<br>}<br><br>func NewRouteRegistrar(c *Controller) server.Routes {<br> return c<br>}<br><br>// user_controller.go<br>func (c UserController) setup(server *gin.Engine) {<br> g := server.Group("/user")<br> <a target="_blank" href="http://g.POST" rel="nofollow noopener">g.POST</a>("/login", c.Login)<br>}<br><br>// server/server.go<br>type Routes interface {<br> SetupRoutes(s *gin.Engine)<br>}<br><br>func NewServer(r Routes) {<br> s := gin.New()<br> r.SetupRoutes(s)<br>}<br>
嗯啊,越省事儿越好,自动注册在研究,看看还有没有更好的方案
Vgo确实是一款非常适合Golang初学者的开源框架。以下是对Vgo的详细介绍:
一、Vgo概述
Vgo是一款基于Gin开源的服务端框架,它集成了Redis、Mysql、JWT、队列等技术栈,为开发者提供了丰富的功能支持。其代码结构清晰,易于理解和维护,非常适合作为Golang初学者的学习项目。
二、Vgo特点
- 易于上手:Vgo框架的设计简洁明了,初学者可以迅速掌握其使用方法。
- 功能丰富:支持多种技术栈,能够满足不同场景下的开发需求。
- 性能优越:基于Gin框架构建,继承了Gin的高性能和可扩展性。
三、如何使用Vgo
- 克隆代码仓库:从Gitee等代码托管平台克隆Vgo的代码仓库。
- 安装依赖:导入必要的依赖,如mysql8和redis。
- 运行项目:使用Go语言的运行命令,启动Vgo项目。
四、总结
Vgo作为一款适合Golang初学者的开源框架,具有易于上手、功能丰富和性能优越等特点。通过学习和使用Vgo,初学者可以迅速掌握Golang的基础知识和开发技能,为后续深入学习打下坚实基础。如果你对Golang感兴趣,不妨尝试一下Vgo框架,相信你会有不错的收获。