前言:
由于一些情况,我将要舍弃多年使用的Java语言,开始学习Go语言。事实上, 自己在java领域只是一个小学生而已...而Go语言对我来说完全陌生,我甚至在得知自己要转语言时,才第一次听说...闲言少叙,赶紧开始学习吧!
由于学习时间较短,我采用直接上手的方式。先搭建起一个Beego框架的后台,看看效果。我觉得这种直观感受,会让人一下子知道它是什么样子。
20 个好用的 Go 语言微服务开发框架
这篇文章介绍了go语言的开发框架,目前应该是Beego比较多吧。因此,选择从Beego开始入门。
我使用的代码来自https://github.com/yunnet/gardens,是一个设备监控管理的后台,暂且叫它样例项目吧。
首先运行MySQL(net start mysql)和Redis(D:\researchTool\Redis>redis-server.exe redis.windows.conf),Redis服务开启后不要关闭命令行窗口。
然后打开eclipse,右键main.go,选择Run As->Go Application。
最后通过http://localhost:8080访问。
具体的配置过程可参考https://github.com/lhtzbj12/sdrms。
一般的文件结构如下面的左图所示。是MVC结构:M(models目录)、V(views目录)、C(controllers目录)的结构。main.go是入口文件。
右图是样例项目中的文件结构。
当运行main.go后,程序做了什么呢?首先我们来看一下mian.go的代码,如下图所示。
import()中三个包,前两个用"_"修饰,表示的是匿名导入包,意思是只导入包但不使用包内类型和数值。匿名导入的包与其他方式导入包一样会让导入包编译到可执行文件中,同时,导入包也会触发 init() 函数调用。代码运行的顺序如下图所示。
在样例项目中的mian.go文件中,我们了解到程序从import开始运行。
_ "github.com/yunnet/gardens/routers"
我们找到这个路径routers文件里只有一个文件:router.go。打开它后发现,有一个初始化函数,样子为下图所示。查阅一些资料后明白,原来这就是路由。路由机制指的是映射 URL 到 controller。其中第一个参数是 URL (用户请求的地址),也就是我们访问的不带任何参数的 URL,第二个参数是对应的 Controller。
如图中第一个路由:
beego.Router("/equipmentoverview/index", &controllers.EquipmentOverviewController{}, "*:Index")
这一行代码的意思是,当用户访问“/equipmentoverview/index”这个URL时,对于后台来说就是找到了EquipmentOverviewController这个Controller。第三个参数指的是请求方法名的对应,使用 httpmethod:funcname 格式来展示。其中,可用的 HTTP Method:
那么这里是任意请求都执行controller中的Index函数。那么我们看一下index函数的功能是什么。同时,我们打开网页,看看这个网页的样子及功能。
从上面两张图可以看出,pageTitle是网页的名字,通过这种方式定义。其他几行代码,以我现在的能力还不能看懂...继续学习!
本文参考:
https://blog.csdn.net/enweitech/article/details/79347754
https://www.cnblogs.com/flying1819/articles/8832667.html
https://www.jianshu.com/p/417fcc5841f8
http://c.biancheng.net/view/91.html
https://beego.me/docs/mvc/controller/router.md