初识beego

作者: 高鸿祥 | 来源:发表于2018-10-07 19:32 被阅读33次

    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

        本文链接:https://www.haomeiwen.com/subject/tmqraftx.html