Gin-Vue-Admin中路由的原理

今天在学gin-vue-admin的时候,看了作者做的一个视频,看到路由的使用的时候看的一知半解,这里面的路由跟我们平常见到的怎么不一样,而且他的这个路由看起来就高大上。也许大家都会有一个疑问,那就是他这里面的路由是怎么工作的?带着这个问题,再根据作者的源代码,理清一下思路,弄明白路由的使用。
在看路由之前先看一下gin-vue-admin框架后端的启动流程,从main方法开始看。

func main() {
	global.GVA_VP = core.Viper() // 初始化Viper
	initialize.OtherInit()
	global.GVA_LOG = core.Zap() // 初始化zap日志库
	zap.ReplaceGlobals(global.GVA_LOG)
	global.GVA_DB = initialize.Gorm() // gorm连接数据库
	initialize.Timer()
	initialize.DBList()
	if global.GVA_DB != nil {
		initialize.RegisterTables() // 初始化表
		// 程序结束前关闭数据库链接
		db, _ := global.GVA_DB.DB()
		defer db.Close()
	}
	core.RunWindowsServer()
}

这里面主要是初始化一些东西,那刚学的小伙伴就会好奇,为什么没有初始化路由?
路由是肯定会初始化的,只不过没有明显的标在main方法中,注意core.RunWindowsServer()这一段,光看是不能发现什么的,但是进去后就会发现别有洞天。

func RunWindowsServer() {
	if global.GVA_CONFIG.System.UseMultipoint || global.GVA_CONFIG.System.UseRedis {
		// 初始化redis服务
		initialize.Redis()
	}

	// 从db加载jwt数据
	if global.GVA_DB != nil {
		system.LoadAll()
	}
	Router := initialize.Routers()
	Router.Static("/form-generator", "./resource/page")

	address := fmt.Sprintf(":%d", global.GVA_CONFIG.System.Addr)
	s := initServer(address, Router)
	// 保证文本顺序输出
	// In order to ensure that the text order output can be deleted
	time.Sleep(10 * time.Microsecond)
	global.GVA_LOG.Info("server run success on ", 		zap.String("address", address))
	global.GVA_LOG.Error(s.ListenAndServe().Error())
}

作者在这里面初始化了router,Routers里面就跟我们平常看到的路由结构差不多了。
但是很多人不是在这里不明白,则是创建路由的时候作者套的里三层外三层的让人非常的头大。下面我们来分析一下作者的目的。

创建路由原理分析

在这里插入图片描述
在这里面作者放了很多的路由组,方便路由的管理,这里面的路由组会映射到同级别下的enter.go文件的结构体里面
在这里插入图片描述
后面的路由构造跟上面的大差不差。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值