beego 框架是一个使用 Go 语言快速开发 API、Web 及后端服务等各种应用的 MVC 框架。beego 的主要设计灵感来源于 tornado、sinatra、flask 这三个框架,但是结合了 Go 本身的一些特性。
beego 框架相对于仅包含路由和控制器核心模块的 echo 框架、gin 框架更为完备,beego 是一个完整的 MVC 框架,它包括 controller(路由和控制器)、model(数据库ORM 封装)以及 view (模板和标签)等 MVC 必备模块。
1. beego框架 工作流程
流程图说明:
- http 请求从左侧 main 入口函数开始进入框架;
- 解析 url 路由,然后确定执行那个控制器(controller);
- 执行请求前的过滤器(过滤器一般用来拦截请求,例如做 api 签名校验,session 处理,安全验证等);
- 执行控制器,控制器根据需要调用 model,session,日志等模块;
- 执行请求后的过滤器;
- 输出结果,视图呈现给给用户。
2. beego框架 安装
1) 设置代理
由于安装 beego 需要从 github 下载各种依赖包,考虑到国内网络环境,所以最好使用代理加速下载过程。
使用代理服务器也非常简单:
使用 Linux shell 或者 windows cmd,执行如下命令:
$ go env -w GO111MODULE=on $ go env -w GOPROXY=https://goproxy.cn,direct
2) 安装 beego
安装 beego 源代码,可以执行如下命令:
$ go get github.com/astaxie/beego
如果升级 beego 源代码,可以执行如下命令:
$ go get -u github.com/astaxie/beego
3) 安装 beego 项目工具
beego 提供了创建或者运行 beego 项目的工具 bee,我们最好安装 bee 工具,以方便进行项目开发:
$ go get github.com/beego/bee
安装 bee 包后,需要将 $GOPATH/bin 路径添加到环境变量 path 中, 否则会提示找不到 bee 命令,$GOPATH 代表的就是你的 GOPATH 路径,如果你不知道 GOPATH 路径在哪里,执行下 go env 命令,会列出所有 go 相关的环境变量,从里面找到 GOPATH 路径。
bee 安装成功后,通过 Linux shell 或者 windows cmd,直接可以运行 bee。
3. 使用 bee 创建项目
下面使用 bee 快速创建一个新的项目, 打开命令窗口,进入 $GOPATH/src 目录,然后执行 bee 命令。
bee new codebaoku
其中,codebaoku是项目名称。bee 工具在当前目录创建了一个 codebaoku 的目录,里面包含了 beego 项目的基本结构。
提示: 如果你熟悉 beego 项目结构也可以手动创建项目,当然为了效率还是建议用 bee 快速创建。
4. beego 项目结构
codebaoku ├── conf - 配置文件存放目录 │ └── app.conf - beego应用配置文件,里面包含一些默认的配置包括启动端口、运行模式等等 ├── controllers - 控制器目录 │ └── default.go ├── main.go - 入口文件 ├── models - model目录,存放我们的业务逻辑和数据库相关的操作 ├── routers - 路由配置目录,主要存放我们各个业务模块的路由设置 │ └── router.go ├── static - 静态资源目录,默认静态资源访问url为 "http://域名/static/资源路径" │ ├── css │ ├── img │ └── js ├── tests - 单元测试脚本目录 │ └── default_test.go └── views - 视图模板目录 └── index.tpl
5. 运行 beego 项目
我们已经创建了项目 codebaoku,现在可以把项目运行起来看看效果。
进入项目根目录 codebaoku:
cd codebaoku
运行项目 codebaoku:
bee run
bee运行项目,支持热编译,就是如果你修改了 go 文件,bee 会自动重新编译,你只要刷新页面就可以看到最新的效果,不需要手动编译。
然后通过浏览器访问: http://localhost:8080 , 可以看到如下效果:
提示:你也可以直接运行 main.go 文件, 例如: go run main.go,这种方式每次修改文件,需要手动编译。
beego 框架使用:beego 框架相对于仅包含路由和控制器核心模块的 echo 框架、gin 框架更为完备,beego 是一个完整的 MVC 框架。使用 beego 开发 go 语言项目,需要编写控制器 controller、业务模型 model 以及 view (html 模板)等模块。