我的编程空间,编程开发者的网络收藏夹
学习永远不晚

go语言的beego怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

go语言的beego怎么使用

今天小编给大家分享一下go语言的beego怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

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

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的class="lazy" data-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

go语言的beego怎么使用

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

go语言的beego怎么使用

如果安装还是没有反应

set GO111MODULE=onset 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的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、js、html这几类文件。html中会存放应用的静态页面文件。

视图模板:views

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

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

5. beego框架路由设置

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

基础路由

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

beego.Get("",func) // 表示Getbeego.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是可以自动创建表的,与python的django框架有的一拼。

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

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

// 首页显示内容,ffunc MakeHomeBlocks(articles []Article, isLogin bool) template.HTML {htmlHome := ""// for index, value := range objects{} 实现遍历for _, art := range articles {// 转换为模板所需要的数据homePageParam := HomeBlockParam{}homePageParam.Id = art.IdhomePageParam.Title = art.TitlehomePageParam.Tags = createTagsLinks(art.Tags)homePageParam.Short = art.ShorthomePageParam.Content = art.ContenthomePageParam.Author = art.AuthorhomePageParam.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展示页面

beego的项目目录结构如下:

go语言的beego怎么使用

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

go语言的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语言的beego怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

go语言的beego怎么使用

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

下载Word文档

猜你喜欢

go语言的beego怎么使用

今天小编给大家分享一下go语言的beego怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。beego是一个使用Go语言
2023-07-04

go语言的beego是什么

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

go语言beego框架web开发语法是什么

今天小编给大家分享一下go语言beego框架web开发语法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。两个跳转语法第
2023-06-30

怎么使用GO语言

这篇文章主要讲解了“怎么使用GO语言”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用GO语言”吧!什么是 GVMGo 语言版本管理器(GVM)是管理 Go 语言环境的开源工具。GVM
2023-06-16

怎么使用Go语言的map

这篇文章主要讲解了“怎么使用Go语言的map”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Go语言的map”吧!语法声明和初始化配合make使用,否则是nilvar map[KeyT
2023-06-25

Go语言的WaitGroup怎么使用

本篇内容介绍了“Go语言的WaitGroup怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!小试牛刀我们先来个简单的例子,看下 Wai
2023-07-02

Go语言的exec怎么使用

本篇内容介绍了“Go语言的exec怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Exec 是 os 包中的一个子包,它可用于使用 G
2023-06-30

Go语言dolphinscheduler怎么使用

这篇文章主要介绍了Go语言dolphinscheduler怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言dolphinscheduler怎么使用文章都会有所收获,下面我们一起来看看吧。自动化为什
2023-07-02

Go语言的os包怎么使用

这篇“Go语言的os包怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go语言的os包怎么使用”文章吧。Go语言的 o
2023-07-05

go语言的跳转语句怎么使用

这篇文章主要介绍“go语言的跳转语句怎么使用”,在日常操作中,相信很多人在go语言的跳转语句怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go语言的跳转语句怎么使用”的疑惑有所帮助!接下来,请跟着小编
2023-07-04

Go语言的条件语句怎么使用

本篇内容主要讲解“Go语言的条件语句怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言的条件语句怎么使用”吧!1、if...else判断语法语法的使用和其他语言没啥区别。样例代码如下
2023-06-30

go语言中的decimal怎么使用

这篇文章主要介绍了go语言中的decimal怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇go语言中的decimal怎么使用文章都会有所收获,下面我们一起来看看吧。decimal是为了解决Golang中
2023-07-05

Go语言中的sync.Pool怎么使用

本篇内容介绍了“Go语言中的sync.Pool怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 简介本文将介绍 Go 语言中的 s
2023-07-05

Go语言Time包怎么使用

Go语言的Time包提供了一些用于处理时间的函数和类型。下面是一些常见的Time包的使用方法:1. 获取当前时间:```import "time"now := time.Now()```2. 格式化时间:```import "fmt"imp
2023-08-30

go语言中mysql怎么使用

本篇内容介绍了“go语言中mysql怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!golang支持多种数据库1、MySQLMySQL
2023-07-04

go语言中怎么使用select

这篇文章主要介绍“go语言中怎么使用select”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言中怎么使用select”文章能帮助大家解决问题。在golang语言中,select语句 就是用来
2023-06-30

go语言类型断言怎么使用

本篇内容主要讲解“go语言类型断言怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go语言类型断言怎么使用”吧!在go语言中,类型断言是一个使用在接口值上的操作,用于检查接口类型变量所持有
2023-07-05

Go语言之Switch语句怎么使用

这篇“Go语言之Switch语句怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go语言之Switch语句怎么使用”文
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录