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

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

01

介绍


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


beego 架构:

640.png

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


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


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


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


beego 执行逻辑:

640.png


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
go get github.com/beego/bee@develop
  • 查看 bee 版本
bee version
  • 如果可以输出版本信息,证明 bee 工具安装成功。(bug:使用 bee 工具查询版本,显示的 beego 版本信息不对。)
  • 新建 web 项目(bug:bee 工具生成 web 项目,使用的 beego v1.12.1
bee new web
  • 升级到 beego v2.0.0
cd web
go get -u github.com/astaxie/beego@develop
  • 运行
bee run
curl -G http://localhost:8080


03

快速入门


web 项目的目录结构:


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。


package main
import (
  _ "web/routers"
  beego "github.com/astaxie/beego/server/web"
)
func main() {
  beego.Run()
}


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


package routers
import (
  "web/controllers"
  beego "github.com/astaxie/beego/server/web"
)
func init() {
    beego.Router("/", &controllers.MainController{})
}


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


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 文件,使用模板标签语法,渲染数据。


<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 项目目录结构和代码解读。





目录
相关文章
|
2月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
110 4
Golang语言之管道channel快速入门篇
|
2月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
101 3
Golang语言之gRPC程序设计示例
|
1月前
|
Go
安装golang
golang官网——
32 1
|
2月前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
51 3
Golang语言之Prometheus的日志模块使用案例
|
1月前
|
前端开发 中间件 Go
实践Golang语言N层应用架构
【10月更文挑战第2天】本文介绍了如何在Go语言中使用Gin框架实现N层体系结构,借鉴了J2EE平台的多层分布式应用程序模型。文章首先概述了N层体系结构的基本概念,接着详细列出了Go语言中对应的构件名称,包括前端框架(如Vue.js、React)、Gin的处理函数和中间件、依赖注入和配置管理、会话管理和ORM库(如gorm或ent)。最后,提供了具体的代码示例,展示了如何实现HTTP请求处理、会话管理和数据库操作。
30 0
|
2月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
66 4
Golang语言文件操作快速入门篇
|
2月前
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
86 4
|
2月前
|
Go
Golang语言错误处理机制
这篇文章是关于Golang语言错误处理机制的教程,介绍了使用defer结合recover捕获错误、基于errors.New自定义错误以及使用panic抛出自定义错误的方法。
46 3
|
2月前
|
Go 调度
Golang语言goroutine协程篇
这篇文章是关于Go语言goroutine协程的详细教程,涵盖了并发编程的常见术语、goroutine的创建和调度、使用sync.WaitGroup控制协程退出以及如何通过GOMAXPROCS设置程序并发时占用的CPU逻辑核心数。
50 4
Golang语言goroutine协程篇
|
2月前
|
Go
Golang语言之函数(func)进阶篇
这篇文章是关于Golang语言中函数高级用法的教程,涵盖了初始化函数、匿名函数、闭包函数、高阶函数、defer关键字以及系统函数的使用和案例。
58 3
Golang语言之函数(func)进阶篇