forked from go/golangs_learn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.3 KiB
115 lines
4.3 KiB
4 years ago
|
# 什么是Beego
|
||
|
|
||
|
> beego 是一个快速开发Go应用的http框架,go 语言方面技术大牛。
|
||
|
>
|
||
|
> beego 可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。
|
||
|
|
||
|
### 官方网站
|
||
|
|
||
|
Beego官网:[https://beego.me/](https://beego.me/)
|
||
|
|
||
|
### 框架源码
|
||
|
|
||
|
Beego框架源码地址:[https://github.com/beego/beego](https://github.com/beego/beego)
|
||
|
|
||
|
### 框架学习文档
|
||
|
|
||
|
「推荐」Beego框架中文学习文档: [https://beego.me/docs/intro/](https://beego.me/docs/intro/)
|
||
|
当然,还有其他相关资料,比如说xorm框架等,这些我们在后面的课程文档中学习到以后再做解释和说明。
|
||
|
|
||
|
# 开发环境
|
||
|
|
||
|
- GoLand 2019.2 EAP
|
||
|
- GoLang 1.11.5
|
||
|
- 采用 Bee工具 进行项目管理
|
||
|
|
||
|
## Beego 开发环境搭建
|
||
|
|
||
|
> go get -u -v github.com/beego/beego
|
||
|
>
|
||
|
## Bee 开发工具安装和打包
|
||
|
|
||
|
> go get -u -v github.com/beego/bee
|
||
|
|
||
|
## 生成 Bee 工具包
|
||
|
|
||
|
```
|
||
|
$ cd $GOPATH/src/github.com/beego/bee
|
||
|
$ go build -o bee beego.go
|
||
|
```
|
||
|
|
||
|
# 简单示例
|
||
|
下面这个示例程序将会在浏览器中打印 “Hello world”,以此说明使用 beego 构建 Web 应用程序是多么的简单!
|
||
|
|
||
|
```
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/beego/beego/v2/server/web"
|
||
|
)
|
||
|
|
||
|
type MainController struct {
|
||
|
web.Controller
|
||
|
}
|
||
|
|
||
|
func (this *MainController) Get() {
|
||
|
this.Ctx.WriteString("hello world")
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
web.Router("/", &MainController{})
|
||
|
web.Run()
|
||
|
}
|
||
|
```
|
||
|
把上面的代码保存为 hello.go,然后通过命令行进行编译并执行:
|
||
|
|
||
|
```
|
||
|
$ go build -o hello hello.go
|
||
|
$ ./hello
|
||
|
```
|
||
|
这个时候你可以打开你的浏览器,通过这个地址浏览 http://127.0.0.1:8080 返回 “hello world”。
|
||
|
|
||
|
那么上面的代码到底做了些什么呢?
|
||
|
|
||
|
> 1、首先我们导入了包 `github.com/beego/beego/v2/server/web`。我们知道 Go 语言里面被导入的包会按照深度优先的顺序去执行导入包的初始化(变量和 init 函数,更多详情),beego 包中会初始化一个 BeeAPP 的应用和一些参数。
|
||
|
>
|
||
|
> 2、定义 Controller,这里我们定义了一个 struct 为 `MainController`,充分利用了 Go 语言的组合的概念,匿名包含了 `web.Controller`,这样我们的 `MainController` 就拥有了 `web.Controller` 的所有方法。
|
||
|
>
|
||
|
> 3、定义 RESTful 方法,通过匿名组合之后,其实目前的 `MainController` 已经拥有了 `Get`、`Post`、`Delete`、`Put` 等方法,这些方法是分别用来对应用户请求的 Method 函数,如果用户发起的是 `POST` 请求,那么就执行 `Post` 函数。所以这里我们定义了 MainController 的 Get 方法用来重写继承的 Get 函数,这样当用户发起 GET 请求的时候就会执行该函数。
|
||
|
>
|
||
|
> 4、定义 main 函数,所有的 Go 应用程序和 C 语言一样都是 main 函数作为入口,所以我们这里定义了我们应用的入口。
|
||
|
>
|
||
|
> 5、Router 注册路由,路由就是告诉 beego,当用户来请求的时候,该如何去调用相应的 Controller,这里我们注册了请求 `/` 的时候,请求到 `MainController`。这里我们需要知道,Router 函数的两个参数函数,第一个是路径,第二个是 Controller 的指针。
|
||
|
>
|
||
|
> 6、Run 应用,最后一步就是把在步骤 1 中初始化的 BeeApp 开启起来,其实就是内部监听了 8080 端口:Go 默认情况会监听你本机所有的 IP 上面的 8080 端口。
|
||
|
|
||
|
停止服务的话,请按 `Ctrl+c`。
|
||
|
|
||
|
下面为 windows 下的快捷操作批处理文件:
|
||
|
在 `%GOPATH%/src` 目录下分别创建文件 `step1.install-bee.bat 和 step2.new-beego-app.bat`。
|
||
|
|
||
|
`step1.install-bee.bat` 文件内容:
|
||
|
```
|
||
|
set GOPATH=%~dp0..
|
||
|
go build github.com\beego\bee
|
||
|
|
||
|
copy bee.exe %GOPATH%\bin\bee.exe
|
||
|
del bee.exe
|
||
|
pause
|
||
|
```
|
||
|
`step2.new-beego-app.bat` 文件内容:
|
||
|
```
|
||
|
@echo 设置 App 的值为您的应用文件夹名称
|
||
|
set APP=coscms.com
|
||
|
set GOPATH=%~dp0..
|
||
|
set BEE=%GOPATH%\bin\bee
|
||
|
%BEE% new %APP%
|
||
|
cd %APP%
|
||
|
echo %BEE% run %APP%.exe > run.bat
|
||
|
echo pause >> run.bat
|
||
|
start run.bat
|
||
|
pause
|
||
|
start http://127.0.0.1:8080
|
||
|
```
|
||
|
依次点击上面创建的两个文件即可快速开启 beego 之旅。
|
||
|
以后只需要到您的应用目录下点击 `run.bat` 即可。
|