01 . Go框架之Beego简介部署及程序流程分析 (2)

命令用来运行项目,并且能够通过监控文件系统,实时进行代码的热部署更新。也就是,我们代码逻辑进行了修改,不用停止应用,在前端页面就能看到改变。

pack命令 // bee pack

pack命令用来发布应用的时候的打包操作,该命令会把项目大包成zip包,然后我们就可以在部署的时候直接把大包后的项目上传到服务器,然后解压进行部署。

version命令 // bee version

Version命令来查看当前bee,beego,go的版本。

使用Bee工具

常见的几个bee工具命令就是上面的几个,立即来练习使用一下。打开命令行终端,进入到GOPATH所对应的目录,然后进入到src目录中。

创建项目

使用bee run命令来新建一个案例项目,比如我们新建一个BeegoDemo2的项目,我们执行命令:bee new BeegoDemo2,命令执行效果如下:

bee new test ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.11.0 2020/07/25 16:35:17 WARN ▶ 0001 You current workdir is not inside $GOPATH/src. 2020/07/25 16:35:17 INFO ▶ 0002 Creating application... create /Users/youmen/Go_wunai/src/test/ create /Users/youmen/Go_wunai/src/test/conf/ create /Users/youmen/Go_wunai/src/test/controllers/ create /Users/youmen/Go_wunai/src/test/models/ create /Users/youmen/Go_wunai/src/test/routers/ create /Users/youmen/Go_wunai/src/test/tests/ create /Users/youmen/Go_wunai/src/test/static/ create /Users/youmen/Go_wunai/src/test/static/js/ create /Users/youmen/Go_wunai/src/test/static/css/ create /Users/youmen/Go_wunai/src/test/static/img/ create /Users/youmen/Go_wunai/src/test/views/ create /Users/youmen/Go_wunai/src/test/conf/app.conf create /Users/youmen/Go_wunai/src/test/controllers/default.go create /Users/youmen/Go_wunai/src/test/views/index.tpl create /Users/youmen/Go_wunai/src/test/routers/router.go create /Users/youmen/Go_wunai/src/test/tests/default_test.go create /Users/youmen/Go_wunai/src/test/main.go 2020/07/25 16:35:17 SUCCESS ▶ 0003 New application successfully created! 项目结构 cd ${GOPATH}/src tree test test ├── conf │   └── app.conf ├── controllers │   └── default.go ├── main.go ├── models ├── routers │   └── router.go ├── static │   ├── css │   ├── img │   └── js │   └── reload.min.js ├── tests │   └── default_test.go └── views └── index.tpl 运行项目 bee run ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v1.11.0 2020/07/25 16:37:40 INFO ▶ 0001 Using 'test' as 'appname' 2020/07/25 16:37:40 INFO ▶ 0002 Initializing watcher... go: finding module for package github.com/astaxie/beego go: found github.com/astaxie/beego in github.com/astaxie/beego v1.12.2 test/controllers test/routers 2020/07/25 16:37:43 SUCCESS ▶ 0003 Built Successfully! 2020/07/25 16:37:43 INFO ▶ 0004 Restarting 'test'... 2020/07/25 16:37:43 SUCCESS ▶ 0005 './test' is running... 2020/07/25 16:37:44.611 [I] [asm_amd64.s:1373] http server Running on :8080

1111

01 . Go框架之Beego简介部署及程序流程分析

执行流程分析

Go语言执行的时候是执行main包下面的init函数,main函数依次执行。因此,先找到main.go文件。

package main import ( _ "beego_demo1/routers" "github.com/astaxie/beego" ) func main() { beego.Info("Beego_Demo1") beego.Run("127.0.0.1:8080") }

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

01 . Go框架之Beego简介部署及程序流程分析

根据上图,可以得知程序首先到routers包下执行init方法。到router.go里面看一下具体的代码:

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

package controllers import ( "github.com/astaxie/beego" ) type MainController struct { beego.Controller } func (c *MainController) Get() { c.Data["Website"] = "youmen.me" c.Data["Email"] = "163@.com" c.TplName = "index.tpl" }

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxzjz.html