第002节:执行流程分析

Go语言执行的时候是执行main包下面的init函数,main函数依次执行。因此,先找到main.go文件。
http://7xtcwd.com1.z0.glb.clouddn.com/main_file.png

如上图就是main.go文件内容,那么代码如何执行呢?首先,import导入了两个包,一个是routers,一个是beego。而在routers包前面,可以看到有一个“_”,这表明是引入routers包,并执行init方法。这里涉及一个知识点,就是Go语言的执行过程,这里给大家一张程序执行流程图:
http://7xtcwd.com1.z0.glb.clouddn.com/main_init.png

根据上图,可以得知程序首先到routers包下执行init方法。到router.go里面看一下具体的代码:
http://7xtcwd.com1.z0.glb.clouddn.com/router.png

可以看到在router.go文件中有一个init方法,看到beego.Router()这句代码。router表示的是路由的意思,这个函数的功能是映射 URL 到 controller,第一个参数是 URL (用户请求的地址),这里注册的是 /,也就是访问的不带任何参数的 URL,第二个参数是对应的 Controller,即将把请求分发到那个控制器来执行相应的逻辑,现在去这里设置的MainController中去看一下有什么方法:
http://7xtcwd.com1.z0.glb.clouddn.com/controller.png

MainController结构体及函数声明在default.go文件中。而这里就看到一个Get方法,方法中有三行代码。

上文在浏览器中访问的是:http://localhost:8080,这是一个get请求,请求到了后台以后,什么请求参数都没有,因此,就会被“/”拦截,执行到MainController中的代码,因为是get请求,所以这里自动找到Get函数并进行执行

在get函数里面,有三句代码,前两句c.Data[]= ""表示设置返回的数据字段及内容,最后一句c.TplName表示设置处理该请求指向某个模板文件,这里指向了index.tpl,那么index.tpl文件在哪里呢?可以查看项目目录结构,在views下面,views下面存放一些模板文件。

  • 模板文件
    简单解释一下,通常的页面都是使用静态的html+css+js等这些静态代码来进行页面的布局,页面效果控制等,而把页面的数据使用变量表示,这样,在进行页面展示的时候,就能够自动的填充页面里面的变量的值;这些静态的代码文件统称为模板文件。每个模板文件就是像一个模板一样,样式效果都固定,只是根据数据不一样进行渲染和展示。

beego.Run()逻辑

init方法分析完毕后,程序会继续往下执行,就到了main函数,在main函数中执行:beego.Run()代码。分析一下Run代码的逻辑,在Run方法内部,主要做了几件事:

  • 1)解析配置文件,也就是我们的app.conf文件,比如端口,应用名称等信息。
  • 2)检查是否开启session,如果开启session,就会初始化一个session对象。
  • 3)是否编译模板,beego框架会在项目启动的时候根据配置把views目录下的所有模板进行预编译,然后存放在map中,这样可以有效的提高模板运行的效率,不需要进行多次编译。
  • 4)监听服务端口。根据app.conf文件中的端口配置,启动监听。

原创文章,Golang中国出品,文章对应源码下载:https://www.qfgolang.com/?page_id=1973

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

学习交流群:点击这里给我发消息

QR code