iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >go语言的beego是什么
  • 648
分享到

go语言的beego是什么

go语言Golang 2023-05-14 19:05:50 648人浏览 独家记忆
摘要

beeGo是一个使用Go语言开发的应用WEB框架,目的是为大家提供一个高效率的Web应用开发框架,该框架采用模块封装。beego可以用来快速开发api、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado

beeGo是一个使用Go语言开发的应用WEB框架,目的是为大家提供一个高效率的Web应用开发框架,该框架采用模块封装。beego可以用来快速开发api、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。

go语言的beego是什么

教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

1. Beego简介

1.1 beego是什么

Beego是一个使用Go语言开发的应用Web框架,框架开始于2012年,目的是为大家提供一个高效率的Web应用开发框架,该框架采用模块封装,使用简单,容易学习。对程序员来说,beego掌握起来非常简单,只需要关注业务逻辑实现即可,框架自动为项目需求提供不同的模块功能。

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

特性

  • 简单化:支持RESTful风格、mvc模型;可以使用bee工具类提高开发效率,比如监控代码修改进行热编译,自动化测试代码以及自动化打包部署等丰富的开发调试功能。
  • 智能化:beego框架封装了路由模块、支持智能路由、智能监控,并可以监控内存消耗,CPU使用以及goroutine的运行状况,方便开发者对线上应用进行监控分析。
  • 模块化:beego根据功能对代码进行了解耦封装,形成了Session、Cache、Log、配置解析、性能监控、上下文操作、ORM等独立的模块,方便开发者进行使用
  • 高性能:beego采用Go原生的Http请求,goroutine的并发效率应付大流量的Web应用和API引用。

1.2 命令行工具Bee

bee

bee是一个开发工具,协助Beego框架开发项目是进行创建项目、运行项目、热部署等相关的项目管理的工具,beego是源码负责开发、bee是工具负责构建和管理项目。

USAGE
    bee command [arguments]

AVaiLABLE COMMANDS

    version     Prints the current Bee version // 打印当前bee版本
    migrate     Runs database migrations	// 运行数据库的
    api         Creates a Beego API application // 构建一个beego的API应用
    bale        Transforms non-Go files to Go source files// 转义非go的文件到go的src中区
    fix         Fixes your application by making it compatible with newer versions of Beego
// 通过使得新版本的beego兼容来修复应用
    pro         Source code generator// 源代码生成器
    dev         Commands which used to help to develop beego and bee// 辅助开发beego和bee的
    dlv         Start a debugging session using Delve// 使用delve进行debbugging
    Dockerize   Generates a Dockerfile for your Beego application // 为beego应用生成dockfile
    generate    Source code generator// 源代码生成器
    hprose      Creates an rpc application based on Hprose and Beego frameworks
    new         Creates a Beego application// 创建beego应用
    pack        Compresses a Beego application into a single file // 压缩beego项目文件
    rs          Run customized scripts// 运行自定义脚本
    run         Run the application by starting a local development server
// 通过启动本地开发服务器运行应用
    server      serving static content over HTTP on port// 通过HTTP在端口上提供静态内容
    update      Update Bee// 更新bee
// 创建一个beego项目
bee new FirstBeego
// 运行beego项目
bee run

项目启动的页面

2. 安装beego

// 下载beego的安装包
go get -u GitHub.com/beego/beego/v2@v2.0.0
// 可能会与遇到错误,如下图所示,然后开启set GO111MODULE=on即可,go env可以看环境变量配置,Mac/linux使用export GO111MODULE=on即可
set GO111MODULE=on

安装beego错误

如果安装还是没有反应

set GO111MODULE=on
set GOPROXY=https://goproxy.io

// 然后再执行,即可完成安装beego和bee
$ go get -u github.com/beego/beego/v2
$ go get -u github.com/beego/bee/v2

3. Beego启动流程分析

3.1 程序入口

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

func main() {
	beego.Run()
}

// -------------------routers-------------------
import (
	"FirstBeego/controllers"
	beego "github.com/beego/beego/v2/server/web"
)

func init() {// 会先执行init()函数
    beego.Router("/", &controllers.MainController{})
}

// -------------------MainController-------------------
type MainController struct {
	beego.Controller
}

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

Go语言执行顺序

Go语言代码执行顺序

Beego的beego.Run()逻辑

执行完init()方法之后,程序继续向下执行,到main函数,此时在main函数中执行beego.Run(),主要做了以下几件事:

  • 解析配置文件,即app.conf文件,获取其中的端口、应用名称等信息
  • 检查是否开启session,如果开启了session,会初始化一个session对象
  • 是否编译模板,beego框架会在项目启动的时候根据配置把views目录下的所有模板进行预编译,然后存放在map中,这样可以有效的提高模板运行的效率,不需要进行多次编译
  • 监听服务端口,根据app.conf文件配置端口,启动监听

4. Beego组织架构

项目配置:conf

控制器:controllers

该目录是存放控制器文件的目录,所谓控制器就是控制应用调用哪些业务逻辑,由controllers处理完HTTP请求以后,并负责返回给前端调用者。

数据层:models

models层可以解释为实体层或者数据层,在models层中实现用户和业务数据的处理,主要和数据库表相关的一些操作会放在这个目录中实现,然后将执行后的结果数据返回给controller层。增删改查的操作都是在models中实现。

路由层:routers

路由层,即分发,对进来的后天的请求进行分发操作,当浏览器进行一个http请求达到后台的web项目的时候,必须要让程序能够根据浏览器的请求url进行不同的业务处理,从接受前端请求到判断执行具体的业务逻辑的过程的工作,就让routers来实现。

静态资源目录:static

在static目录下,存放的是web项目的静态资源文件,主要有CSS、img、jshtml这几类文件。html中会存放应用的静态页面文件。

视图模板:views

views中存放的就是应用存放html模板页面的目录,所谓模板,就是页面框架和布局是已经用html写好了的,只需要在进行访问和展示的时候,将获取到的数据动态填充到页面中,能够提高渲染效率。因此,模板文件是非常常见的一种方式。

整个项目的架构就是MVC的运行模式。

5. beego框架路由设置

在beego框架中,支持四种路由设置,分别是:基础路由固定路由正则路由自动路由

基础路由

直接给过beego.Get()beego.Post()beego.Put()beego.Delete()等方法进行路由的映射,。

beego.Get("",func) // 表示Get
beego.Post("",func) // 表示Post

固定路由

beego.Router("/",controller)

Get请求就会对应到Get方法,Post对应到post方法,Delete对应到Delete方法,Header方法对应到Header方法。

正则路由

正则路由是指可以在进行固定路由的基础上,支持匹配一定格式的正则表达式,比如:id:username自定义正则,file的路径和后缀切换以及全匹配等操作。

自定义路由

在开发的时候用固定匹配想要直接执行对应的逻辑控制方法,因此beego提供了可以自定义的自定义路由配置。

beego.Router("/",&IndexController{},"")

// Router adds a patterned controller handler to BeeApp.
// it's an alias method of HttpServer.Router.
// usage:
//  simple router
//  beego.Router("/admin", &admin.UserController{})
//  beego.Router("/admin/index", &admin.ArticleController{})
//
//  regex router
//
//  beego.Router("/api/:id([0-9]+)", &controllers.RController{})
//
//  custom rules
//  beego.Router("/api/list",&RestController{},"*:ListFood")
//  beego.Router("/api/create",&RestController{},"post:CreateFood")
//  beego.Router("/api/update",&RestController{},"put:UpdateFood")
//  beego.Router("/api/delete",&RestController{},"delete:DeleteFood")

6. 静态文件的设置

在go的web项目中,一些静态资源文件,如果用户要访问静态资源文件,则我们也是能够访问到的,这需要我们的项目中进行静态资源设置。

beego.SetStaticPath("/down1","download1")

这里的download目录是指的非go web项目的static目录下目录,而是开发者重新新建的另外的目录。

7. Beego博客项目

beego的orm是可以自动创建表的,与pythonDjango框架有的一拼。

在Go中Object类型的数据使用interface{}空的接口类型来代替。

如果有js文件失效,注意清除缓存之后再来玩,否则添加的js不会生效。

// 首页显示内容,f
func MakeHomeBlocks(articles []Article, isLogin bool) template.HTML {
	htmlHome := ""
	// for index, value := range objects{} 实现遍历
	for _, art := range articles {
		// 转换为模板所需要的数据
		homePageParam := HomeBlockParam{}
		homePageParam.Id = art.Id
		homePageParam.Title = art.Title
		homePageParam.Tags = createTagsLinks(art.Tags)
		homePageParam.Short = art.Short
		homePageParam.Content = art.Content
		homePageParam.Author = art.Author
		homePageParam.CreateTime = utils.SwitchTimeStampToData(art.CreateTime)
		homePageParam.Link = "/article/" + strconv.Itoa(art.Id)
		homePageParam.UpdateLink = "/article/update?id=" + strconv.Itoa(art.Id)
		homePageParam.DeleteLink = "/article/delete?id=" + strconv.Itoa(art.Id)
		homePageParam.IsLogin = isLogin

		// 处理变量,利用ParseFile解析该文件,用于插入变量
		t, _ := template.ParseFiles("views/block/home_block.html")
		buffer := bytes.Buffer{}
		t.Execute(&buffer, homePageParam)
		htmlHome += buffer.String()
	}
	fmt.Println("htmlHome ===>", htmlHome)
	return template.HTML(htmlHome)
}
// 这里可以实现html模板的渲染和追加 最后以html代码的形式插入到具体的前端html展示页面

博客项目大概做了三天吧。就搞完了。基本的代码都是MVC结构,跟Java比较像,不过对HTML的支持,感觉beego做的更好一些。让人使用起来就很舒服的感觉。其他的就下面总结一下吧:

beego的项目目录结构如下:

beego项目目录结构

负责和数据库交互的是model,model主要存放实体类和承接具体的数据请求等相关的方法操作,提供数据给controller层。

beego整体结构

路由的话主要有四种:

  • 默认路由:beego自带模块Post、Put、Delete、Head、Get等网络请求类型的对应方法

  • 自动路由:自动实现映射到Post、Put、Delete、Get等

  • 正则表达式路由:"/article/:id"接收参数的时候需要idStr := this.Ctx.Input.Param(":id")

  • 自定义路由:在博客开发中基本就是自定义路由了/article/add

Session的处理:

  • 配置文件中配置session相关的配置
  • 代码中通过SessionConfig进行参数配置

操作session

  • SetSession:设置session值
  • GetSession:获取session值
  • DelSession:删除session值

View视图模板:

  • controller.TplName指定渲染当前页面的模板文件全称
  • 模板文件中通过{{.param}}实现变量数据的获取操作
  • controller.Data["param"]=xxx实现对页面的需要使用的变量进行赋值操作

项目打包运行

// 项目可以部署在linux上面,一般通过bee来实现直接打包,打包命令为
bee pack -be GOOS=linux // linux上可以没有go的环境

如果直接通过这个命令打包的话,会生成一个tar.gz的压缩文件,此时我们可以tar -zxvf xxx.tar.gz进行解压缩。

然后对项目文件赋予执行权:chmod +x myblog即可配置到执行权。如果现在直接执行的话会报错:

beego panic: err: go command required, not found: exec: “go”: executable file not found in $PATH: stderr:

解决办法是把conf中的runmode=dev修改为runmode=prod即可实现执行。

【相关推荐:Go视频教程、编程教学】

以上就是go语言的beego是什么的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: go语言的beego是什么

本文链接: https://www.lsjlt.com/news/203517.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • go语言的beego是什么
    beego是一个使用Go语言开发的应用Web框架,目的是为大家提供一个高效率的Web应用开发框架,该框架采用模块封装。beego可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado...
    99+
    2023-05-14
    go语言 Golang
  • go语言beego框架web开发语法是什么
    今天小编给大家分享一下go语言beego框架web开发语法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。两个跳转语法第...
    99+
    2023-06-30
  • go语言的beego怎么使用
    今天小编给大家分享一下go语言的beego怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。beego是一个使用Go语言...
    99+
    2023-07-04
  • Go语言中的Beego框架介绍
    Beego是一个基于MVC架构的Go语言Web框架,它提供了一整套的解决方案来简化Web应用程序的开发。Beego内置了很多功能模块,如路由、ORM、Session等,同时也提供了很多...
    99+
    2024-04-02
  • Go语言的起源是什么语言?
    Go语言的起源是来自Google开发的一种编程语言,它的设计初衷是为了解决一些在现有语言中存在的问题。Go语言是一种静态类型的编程语言,于2007年开始研发,2009年首次正式发布。G...
    99+
    2024-04-02
  • go语言的底层是什么语言
    go语言的底层是C语言,Go语言是由C和C++开发者创建的,因此它的底层实现也是用C语言编写的,Go语言底层使用了很多C语言的特性和实现方式,如内存管理、指针、函数调用等,这使得Go语言可以直接调用C语言的库函数,也方便了Go语言与其他编程...
    99+
    2023-07-10
  • Go语言的基础是什么语言?
    Go语言的基础是C语言和Pascal语言。Go语言是由Robert Griesemer、Rob Pike和Ken Thompson三位大牛联合开发的。他们在设计Go语言时,主要参考了C...
    99+
    2024-04-02
  • Go语言是什么
    Go语言(又称 Golang)是一种静态强类型、编译型的编程语言,可以轻松构建简单、可靠以及高效的软件。Go语言语法与C语言相近,但功能更加丰富。Go语言的作者有三个,他们分别是:罗伯特·格利茨默(Robert Griesemer)、罗伯·...
    99+
    2024-04-02
  • Go语言是什么语言写成的?
    Go语言是一种由Google开发的开源编程语言,也被称为Golang。它是一种静态类型、编译型的语言,旨在提供高效的性能和简洁的语法。Go语言的设计注重简单性、效率和可维护性,因此受到...
    99+
    2024-03-14
    语言 编程 go语言 网络编程
  • 什么是go语言
    Go语言(又称Golang)是由Google开发的一种静态类型、编译型的开源编程语言。Go语言的设计目标是简洁、高效、安全和并发,旨在提供一种易于编写和维护的系统级编程语言。它结合了静态类型语言的安全性和高效性,以及动态类型语言的灵活性和开...
    99+
    2023-10-26
    go语言
  • go语言和c语言是什么
    这篇文章主要介绍了go语言和c语言是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇go语言和c语言是什么文章都会有所收获,下面我们一起来看看吧。Go(又称Golang)是Google开发的一种静态强类型、编...
    99+
    2023-07-04
  • go语言beego框架web开发语法笔记示例
    目录两个跳转语法模型创建获取post请求传过来的值获取字符串获取文件获取文件后缀orm查询表所有数据前端循环语法前端格式化时间前端url传值方式两个跳转语法 第一个参数是请求路径,第...
    99+
    2024-04-02
  • go语言是什么编程语言
    go语言是是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go是一种过程编程语言,可用于快速机器代码编译;它提供了并发机制,可以轻松开发多核和联网的机器级程序;它提供对接口和类型嵌入的支持。本教程操作环境:...
    99+
    2023-05-14
    Golang go语言
  • Go语言的别名是什么?
    Go语言的别名是Golang。下面是一个简单的示例代码,演示如何使用别名来创建一个简单的Go程序:package main import ( "fmt" ...
    99+
    2024-04-02
  • Go语言是基于什么语言开发的?
    Go语言是一种由Google开发的开源编程语言,于2007年开始开发,2009年正式发布。Go语言受到了C、Pascal和ALGOL等语言的影响,在设计上具有高效性、易用性和并发性等特...
    99+
    2024-04-02
  • GO 语言中的 SHELL 是什么?
    随着计算机技术的不断发展,人们对于计算机语言的需求也越来越高。其中,Go 语言被越来越多的程序员所青睐。在 Go 语言中,SHELL 是一个非常重要的概念。本文将会介绍 SHELL 在 Go 语言中的作用以及如何使用。 一、SHELL 是...
    99+
    2023-09-05
    自然语言处理 shell 对象
  • go语言的概念是什么
    本文小编为大家详细介绍“go语言的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。go语言是一种计算机编程语言,又称Golang,是Go...
    99+
    2023-07-05
  • Go语言的核心编写语言是什么?
    标题:Go语言的核心编写语言是什么? Go语言是一种由Google开发的编程语言,被称为“云时代的C语言”。它具有高效的并发设计、简洁的语法和强大的性能,因此在云计算、大数据和人工智能...
    99+
    2024-04-02
  • Go语言的主要编写语言是什么?
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《Go语言的主要编写语言是什么?》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧...
    99+
    2024-04-04
  • go和c是什么语言
    Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言;Go语言语法与C相近,但功能上有内存安全、GC(垃圾回收)、结构形态及CSP-style并发计算。C语言是一门面向过程的、抽象化的通用...
    99+
    2023-05-14
    go语言 Golang C语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作