初识beego

beego简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。
beego 是基于八大独立的模块构建的,充分体现了功能模块化。是一个高度解耦的框架。

cache、config、context、httplibs、logs、orm、session、toolbox

用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块。
例如:你可以使用 cache 模块来做你的缓存逻辑;使用日志模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。
beego 不仅可以用于 HTTP 类的应用开发,这也是 beego 为什么受欢迎的一个原因。就像乐高积木一样,通过一个个模块就可以搭建出不同的应用。
beego安装 安装beego beego 的安装是典型的 Go 安装包的形式。(前提当然已经安装好了go)
go get github.com/astaxie/beego

安装bee bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。
go get github.com/beego/bee

添加环境变量
bee 可执行文件默认存放在 $GOPATH/bin 里面,需要把 $GOPATH/bin 添加到环境变量中。
创建项目
bee new hello //创建web项目 bee api hello //创建api项目

api项目只是比web项目少了 static 和 views 目录,多了一个 test 模块,用来做单元测试的。这里以web项目为例
项目位置
go |-- bin |-- pkg |-- src ||-- hello //创建的项目

项目目录结构
hello //项目名称 |-- conf -- app.conf //配置文件 |-- controllers -- default.go //控制器文件 |-- models |-- routers -- router.go //路由文件 |-- static ||-- css ||-- img ||-- js |-- tests -- default_test.go |-- views -- index.tpl //模板文件 -- main.go //入口文件

实际项目中前后台分离,需要增加后台目录,目录结构可能变成这样
hello //项目名称 |-- conf -- app.conf //配置文件 |-- controllers ||-- admin //后台控制器目录 -- default.go //前台控制器文件 |-- models |-- routers -- router.go //路由文件 |-- static ||-- css ||-- img ||-- js |-- tests -- default_test.go |-- views ||-- admin //后台模板目录 -- index.tpl //前台模板文件 -- main.go //入口文件

运行项目
cd hellobee run

浏览器输入localhost:8080就可以看到beego欢迎页面了。
Go 本身已经做了网络层的东西,beego 封装了一下,所以可以做到不需要 nginx 或 apache就可以在浏览器访问(beego沿用Go的默认端口8080)。但正式项目中还是需要专门的ngingx或apache这种web服务器。
入口文件 main.go
package mainimport ( _ "quickstart/routers" "github.com/astaxie/beego" )func main() { beego.Run() }

【初识beego】beego.Run 执行
  • 解析配置文件app.conf。可以配置端口、是否开启 session、应用名称等信息
  • 执行用户的 hookfunc。默认的已经存在了注册 mime,用户可以通过函数 AddAPPStartHook 注册自己的启动函数。
  • 是否开启 session。会根据上面配置文件的分析之后判断是否开启 session,如果开启的话就初始化全局的 session。
  • 是否编译模板。根据配置把 views 目录下的所有模板进行预编译,然后存在 map 里面,这样可以有效的提高模板运行的效率,无需进行多次编译。
  • 是否开启文档功能。根据 EnableDocs 配置判断是否开启内置的文档路由功能
  • 是否启动管理模块。beego 目前做了一个很酷的模块,应用内监控模块,会在 8088 端口做一个内部监听,我们可以通过这个端口查询到 QPS、CPU、内存、GC、goroutine、thread 等统计信息。
  • 监听服务端口。这是最后一步也就是我们看到的访问 8080 看到的网页端口,内部其实调用了 ListenAndServe,充分利用了 goroutine 的优势

    推荐阅读