Go Web——Beego简介

本文详细介绍了Go语言的Beego框架,包括其框架简述、架构设计、执行逻辑、项目结构以及如何创建和管理第一个Beego项目。Beego是一个基于独立模块构建的RESTful框架,适用于API、Web及后端服务开发。文章还涵盖了bee工具的安装、常用命令及其配置文件的使用。
摘要由CSDN通过智能技术生成


一 Beego框架简述

beego简介

beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。

beego 的架构

beego 的整体设计架构如下所示:

在这里插入图片描述

beego 是基于八大独立的模块构建的,是一个高度解耦的框架。

当初设计 beego 的时候就是考虑功能模块化,用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块。例如:你可以使用 cache 模块来做你的缓存逻辑;使用log模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。所以 beego 不仅可以用于 HTTP 类的应用开发,在你的 socket 游戏开发中也是很有用的模块,这也是 beego 如此受欢迎的一个原因。大家如果玩过乐高的话,应该知道很多高级的东西都是一块一块的积木搭建出来的,而设计 beego 的时候,这些模块就是积木,高级机器人就是 beego。

beego 的执行逻辑

既然 beego 是基于这些模块构建的,那么它的执行逻辑是怎么样的呢?beego 是一个典型的 MVC 架构,它的执行逻辑如下图所示:

img

beego 项目结构

一般的 beego 项目的目录如下所示:

├── conf
│   └── app.conf
├── controllers
│   ├── admin
│   └── default.go
├── main.go
├── models
│   └── models.go
├── static
│   ├── css
│   ├── ico
│   ├── img
│   └── js
└── views
    ├── admin
    └── index.tpl

从上面的目录结构我们可以看出来 M(models 目录)、V(views 目录)和 C(controllers 目录)的结构, main.go 是入口文件。

二 第一个beego项目

安装包

go get github.com/beego/beego/v2
go get github.com/beego/bee/v2

创建项目

bee new pro01

需要将将二进制文件添加到或文件bee中的 PATH 环境变量中

若$GOPATH/bin中无bee.exe则:

  1. 下载bee源码:https://github.com/beego/be
  2. 将下载的文件解压到Go/src/github.com/beego/bee
  3. 编译安装
    cd C:\Go\src\github.com\beego\bee
    go build
  4. 将生产的bee.exe拷贝到$GOPATH/bin

管理项目依赖

cd pro01后打开终端:

go mod tidy

运行项目

bee run

运行结果:

______
| ___ \
| |_/ /  ___   ___   
| ___ \ / _ \ / _ \  
| |_/ /|  __/|  __/  
\____/  \___| \___| v2.0.4
2022/08/28 14:13:12 WARN     ▶ 0001 Running application outside of GOPATH
2022/08/28 14:13:12 INFO     ▶ 0002 Using 'pro01' as 'appname'
2022/08/28 14:13:12 INFO     ▶ 0003 Initializing watcher...
github.com/beego/beego/v2
google.golang.org/protobuf/internal/flags
google.golang.org/protobuf/internal/fieldnum
google.golang.org/protobuf/internal/set
google.golang.org/protobuf/internal/genname
golang.org/x/sys/internal/unsafeheader
golang.org/x/mod/semver
google.golang.org/protobuf/internal/pragma
golang.org/x/text/transform
github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg
github.com/shiena/ansicolor
github.com/cespare/xxhash/v2
google.golang.org/protobuf/internal/detrand
github.com/mitchellh/mapstructure
google.golang.org/protobuf/internal/version
gopkg.in/yaml.v2
github.com/prometheus/common/model
golang.org/x/sys/windows
github.com/beego/beego/v2/core/utils
github.com/beego/beego/v2/server/web/grace
google.golang.org/protobuf/internal/errors
github.com/beego/beego/v2/core/logs
golang.org/x/crypto/acme
golang.org/x/text/unicode/bidi
golang.org/x/text/unicode/norm
google.golang.org/protobuf/encoding/protowire
github.com/beego/beego/v2/core/admin
github.com/beego/beego/v2/server/web/session
golang.org/x/tools/internal/event/label
golang.org/x/tools/go/internal/gcimporter
golang.org/x/tools/internal/typesinternal
google.golang.org/protobuf/reflect/protoreflect
golang.org/x/tools/internal/event/keys
github.com/beego/beego/v2/core/config
golang.org/x/text/secure/bidirule
golang.org/x/net/idna
golang.org/x/tools/internal/event/core
github.com/beego/beego/v2/server/web/context
google.golang.org/protobuf/internal/mapsort
google.golang.org/protobuf/internal/fieldsort
google.golang.org/protobuf/internal/strs
google.golang.org/protobuf/internal/descfmt
google.golang.org/protobuf/runtime/protoiface
google.golang.org/protobuf/reflect/protoregistry
google.golang.org/protobuf/internal/descopts
golang.org/x/tools/internal/event
golang.org/x/tools/go/gcexportdata
golang.org/x/tools/internal/gocommand
google.golang.org/protobuf/internal/encoding/text
google.golang.org/protobuf/internal/encoding/messageset
github.com/beego/beego/v2/server/web/context/param
golang.org/x/crypto/acme/autocert
golang.org/x/tools/internal/packagesinternal
golang.org/x/tools/go/internal/packagesdriver
google.golang.org/protobuf/proto
google.golang.org/protobuf/internal/encoding/defval
golang.org/x/tools/go/packages
google.golang.org/protobuf/encoding/prototext
google.golang.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值