初识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 hello

bee run

浏览器输入localhost:8080就可以看到beego欢迎页面了。

Go 本身已经做了网络层的东西,beego 封装了一下,所以可以做到不需要 nginx 或 apache就可以在浏览器访问(beego沿用Go的默认端口8080)。但正式项目中还是需要专门的ngingx或apache这种web服务器。

入口文件 main.go

package main

import (
    _ "quickstart/routers"
    "github.com/astaxie/beego"
)

func main() {
    beego.Run()
}

beego.Run 执行

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

你可能感兴趣的:(初识beego)