beego简介
beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。
beego的设计就是一种搭积木的思维,就是模块化构建,是一个高度解耦的框架。在使用模块化开发时,即使你不懂beego的http逻辑,依旧可以使用这些独立模块。例如:你可以使用 cache 模块来做你的缓存逻辑;使用日志模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。所以 beego 不仅可以用于 HTTP 类的应用开发,在你的 socket 游戏开发中也是很有用的模块,这也是 beego 为什么受欢迎的一个原因。
beego的执行逻辑
beego 是一个典型的 MVC 架构,他的执行逻辑如下图所示:
beego的安装
1.安装bee工具
//用于安装bee工具
go get github.com/beego/bee/v2
可能出现的问题:
$go get github.com/beego/bee
go get: module github.com/beego/bee: Get "https://proxy.golang.org/github.com/beego/bee/@v/list": dial tcp 216.58.200.49:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
这是因为此时的环境设置的golang的镜像路径是官方路径:set GOSUMDB=sum.golang.org,在使用过程中又慢又容易出错。
因此可以先看下环境的配置是否切换,先go env 看 GOSUMDB 的配置,将其进行关闭:
go env -w GOSUMDB=off
而后将代理设置为国内的镜像,用go mod 快,不用翻墙。
$go get github.com/beego/bee/v2
配置环境:
在Windows10
的配置部署是:此电脑->属性->高级系统设置->环境变量
查看bee的版本。
$bee version
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v2.0.2
├── Beego : Beego is not installed. Please do consider installing it first: https://github.com/beego/beego/v2. If you are using go mod, and you don't install the beego under $GOPATH/src/github.com/astaxie, just ignore this.
├── GoVersion : go1.16.2
├── GOOS : windows
├── GOARCH : amd64
├── NumCPU : 4
├── GOPATH : C:\Users\liu\go
├── GOROOT : D:\environment\go
├── Compiler : gc
└── Date : Saturday, 27 Mar 2021
创建项目
beego 的项目基本都是通过 bee 命令来创建的,所以在创建项目之前确保你已经安装了 bee 工具和 beego。如果你还没有安装,那么请查阅 beego 的安装 和 bee 工具的安装。 现在一切就绪我们就可以开始创建项目了,打开终端,进入 $GOPATH/src 所在的目录:
$bee new bee_01
2021/03/27 12:33:23 INFO ▶ 0001 generate new project support go modules.
2021/03/27 12:33:23 INFO ▶ 0002 Creating application...
create D:\golang\bee_01\go.mod
create D:\golang\bee_01\
create D:\golang\bee_01\conf\
create D:\golang\bee_01\controllers\
create D:\golang\bee_01\models\
create D:\golang\bee_01\routers\
create D:\golang\bee_01\tests\
create D:\golang\bee_01\static\
create D:\golang\bee_01\static\js\
create D:\golang\bee_01\static\css\
create D:\golang\bee_01\static\img\
create D:\golang\bee_01\views\
create D:\golang\bee_01\conf\app.conf
create D:\golang\bee_01\controllers\default.go
create D:\golang\bee_01\views\index.tpl
create D:\golang\bee_01\routers\router.go
create D:\golang\bee_01\tests\default_test.go
create D:\golang\bee_01\main.go
2021/03/27 12:33:23 SUCCESS ▶ 0003 New application successfully created!
安装相关插件:
go mod download github.com/beego/beego/v2
go get github.com/beego/beego/v2/server/web@v2.0.1
bee api bee_01 //api 命令
我们在开发 Go 项目的时候最大的问题是经常需要自己手动去编译再运行,bee run
命令是监控 beego 的项目,通过 fsnotify 监控文件系统。这样我们在开发过程中就可以实时的看到项目修改之后的效果:
bee run
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v2.0.2
2021/03/27 12:39:58 WARN ▶ 0001 Running application outside of GOPATH
2021/03/27 12:39:58 INFO ▶ 0002 Using 'bee_01' as 'appname'
2021/03/27 12:39:58 INFO ▶ 0003 Initializing watcher...
bee_01/controllers
bee_01/routers
bee_01
2021/03/27 12:40:01 SUCCESS ▶ 0004 Built Successfully!
2021/03/27 12:40:01 INFO ▶ 0005 Restarting 'bee_01.exe'...
2021/03/27 12:40:01 SUCCESS ▶ 0006 './bee_01.exe' is running...
2021/03/27 12:40:03.234 [I] [parser.go:413] generate router from comments
2021/03/27 12:40:03.249 [I] [server.go:241] http server Running on http://:8080
2021/03/27 12:40:30.947 [D] [router.go:955] | ::1| 200 | 2.5006ms| match| GET / r:/
2021/03/27 12:40:31.062 [D] [router.go:955] | ::1| 200 | 931.3µs| match| GET /static/js/reload.min.js
在浏览器点开测试:
ok。