首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang 语言 beego v2 之安装和快速入门

Golang 语言 beego v2 之安装和快速入门

作者头像
frank.
发布2020-12-08 14:50:13
发布2020-12-08 14:50:13
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

01

介绍

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

beego 架构:

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

当初设计 beego 的时候就是考虑功能模块化,用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块,例如:你可以使用 cache 模块来做你的缓存逻辑;使用日志模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。

所以 beego 不仅可以用于 HTTP 类的应用开发,在你的 socket 游戏开发中也是很有用的模块,这也是 beego 为什么受欢迎的一个原因。

大家如果玩过乐高的话,应该知道很多高级的东西都是一块一块的积木搭建出来的,而设计 beego 的时候,这些模块就是积木,高级机器人就是 beego。

beego 执行逻辑:

02

安装 beego v2

因为截至本文发稿前,beego v2 正式版还没有发布,所以我们通过安装 beego 的 develop 分支,使用 beego v2。

我们使用 bee 工具生成 web 项目,bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。关于 bee 工具的更多用法,请参阅官方文档。

截至本文发稿前,bee v2 正式版也还没有发布,所以我们通过安装 bee 的 develop 分支,使用 bee v2。

安装 bee v2.0.0

查看 bee 版本

如果可以输出版本信息,证明 bee 工具安装成功。(bug:使用 bee 工具查询版本,显示的 beego 版本信息不对。)

新建 web 项目(bug:bee 工具生成 web 项目,使用的 beego v1.12.1)

升级到 beego v2.0.0

运行

cURL 访问

03

快速入门

web 项目的目录结构:

代码语言:javascript
代码运行次数:0
运行
复制
web
├── config
│   └── app.conf
├── controllers
│   └── default.go
├── go.mod
├── go.sum
├── main.go
├── models
├── routers
│   └── router.go
├── static
│   ├── css
│   ├── img
│   └── js
│       └── reload.min.js
├── tests
│   └── default_test.go
└── views
    └── index.tpl

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

阅读 bee 工具生成的 web 项目代码,main.go 文件导入 routers 包,main 函数调用 beego.Run() 方法,监听默认端口 8080。

代码语言:javascript
代码运行次数:0
运行
复制
package main

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

func main() {
  beego.Run()
}

阅读 routers/router.go 文件,init 函数调用beego.Router() 方法,注册路由,第一个参数传入 URI,第二个参数传入Controller。

代码语言:javascript
代码运行次数:0
运行
复制
package routers

import (
  "web/controllers"
  beego "github.com/astaxie/beego/server/web"
)

func init() {
    beego.Router("/", &controllers.MainController{})
}

阅读 controllers/default.go 文件,声明一个名为 MainController 的结构体,并且实现 Get 方法,Get 方法指定模板文件。

代码语言:javascript
代码运行次数:0
运行
复制
package controllers

import (
  beego "github.com/astaxie/beego/server/web"
)

type MainController struct {
  beego.Controller
}

func (c *MainController) Get() {
  c.Data["Website"] = "beego.me"
  c.Data["Email"] = "astaxie@gmail.com"
  c.TplName = "index.tpl"
}

阅读 views/index.tpl 文件,使用模板标签语法,渲染数据。

代码语言:javascript
代码运行次数:0
运行
复制
<footer>
    <div class="author">
      Official website:
      <a href="http://{{.Website}}">{{.Website}}</a> /
      Contact me:
      <a class="email" href="mailto:{{.Email}}">{{.Email}}</a>
    </div>
</footer>

04

总结

本文开篇介绍了 beego 是什么,beego 的架构和 beego 的执行逻辑,然后介绍了安装 beego v2 的步骤,最后介绍了 bee 工具生成的 web 项目目录结构和代码解读。

bug list:

  1. 使用 bee 工具查询版本,显示的 beego 版本信息不对。
  2. 使用 bee v2.0.0 工具生成 web 项目,安装的 beego 版本 beego v1.12.1。
  3. 使用 bee v2.0.0 工具生成 web 项目,配置文件目录名是 conf/,而 bee run 查找的配置文件目录名是 config/,如果手动修改目录名,bee run 时,将无法自动生成注解路由的文件。

以上 bug 已反馈给 beego 官方。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Go语言开发栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档