>  기사  >  백엔드 개발  >  바둑 언어로 beego가 무엇인가요?

바둑 언어로 beego가 무엇인가요?

青灯夜游
青灯夜游원래의
2023-01-07 13:50:309823검색

beego는 Go 언어를 사용하여 개발된 애플리케이션 웹 프레임워크입니다. 목적은 모듈 캡슐화를 사용하는 효율적인 웹 애플리케이션 개발 프레임워크를 모든 사람에게 제공하는 것입니다. Beego를 사용하면 API, 웹, 백엔드 서비스 등 다양한 애플리케이션을 빠르게 개발할 수 있습니다. RESTFul 프레임워크는 주요 디자인 영감은 tornado, sinatra 및 Flask의 세 가지 프레임워크에서 비롯되지만 일부 기능을 결합합니다. Go 자체(인터페이스, 구조체 상속을 위해 설계된 프레임워크 등).

바둑 언어로 beego가 무엇인가요?

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

1. Beego 소개

1.1 beego란 무엇입니까

Beego는 Go 언어를 사용하여 개발된 애플리케이션 웹 프레임워크입니다. 이 프레임워크는 모든 사람에게 효율적인 웹을 제공할 목적으로 2012년에 시작되었습니다. 모듈 캡슐화를 채택한 애플리케이션 개발 프레임워크는 사용이 간편하고 배우기 쉽습니다. 프로그래머의 경우 beego는 비즈니스 로직 구현에만 집중하면 됩니다. 프레임워크는 프로젝트 요구에 맞는 다양한 모듈 기능을 자동으로 제공합니다.

beego는 API, 웹 및 백엔드 서비스와 같은 다양한 애플리케이션을 빠르게 개발하는 데 사용할 수 있습니다. RESTFul 프레임워크는 tornado, sinatra 및 Flask의 세 가지 프레임워크에서 영감을 얻었지만 일부를 결합합니다. Go 자체의 기능(인터페이스, 구조체 상속 등)

Features

  • Simplification: RESTful 스타일, MVC 모델을 지원하여 핫 컴파일을 위한 코드 수정 모니터링, 코드 자동 테스트, 자동화된 패키징 및 배포 등 개발 효율성을 향상시킬 수 있습니다. 풍부한 개발 및 디버깅 기능.
  • Intelligent: beego 프레임워크는 라우팅 모듈을 캡슐화하고 지능형 라우팅, 지능형 모니터링을 지원하며 메모리 소비, CPU 사용량 및 고루틴 실행 상태를 모니터링할 수 있어 개발자가 온라인 애플리케이션을 편리하게 모니터링하고 분석할 수 있습니다.
  • 모듈화: beego는 기능에 따라 코드를 분리하고 캡슐화하여 세션, 캐시, 로그, 구성 분석, 성능 모니터링, 컨텍스트 작업, ORM 등과 같은 독립적인 모듈을 구성하여 개발자가 사용하기 편리합니다
  • 고성능: beego는 Go의 기본 http 요청을 사용하며 goroutine의 동시성 효율성은 트래픽이 많은 웹 애플리케이션 및 API 참조에 대처할 수 있습니다.

1.2 명령줄 도구 Bee

bee

bee는 프로젝트 생성, 프로젝트 실행, 핫 배포 및 기타 관련 프로젝트 관리 도구에서 Beego 프레임워크 개발 프로젝트를 지원하는 개발 도구입니다. code는 개발을 담당하고, 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

바둑 언어로 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

바둑 언어로 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. 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 언어 실행 순서

바둑 언어로 beego가 무엇인가요?Beego의 beego.Run() logic

init() 메서드를 실행한 후 프로그램은 계속해서 main 함수까지 실행됩니다. 주요 기능

, 주로 다음 작업을 수행했습니다.

beego.Run()구성 파일, 즉 app.conf 파일을 구문 분석하고 포트, 애플리케이션 이름 및 기타 정보를 얻습니다.

    세션이 활성화되어 있는지 확인합니다. 활성화되면 세션 객체가 초기화됩니다
  • 템플릿이 컴파일되었는지 여부에 관계없이 beego 프레임워크는 프로젝트가 시작될 때 구성에 따라 views 디렉터리의 모든 템플릿을 미리 컴파일한 다음 이를 맵에 저장합니다. 이를 통해 효과적으로 개선할 수 있습니다. 템플릿 작업의 효율성을 높이고 여러 컴파일이 필요하지 않습니다.
  • listening 서비스 포트, app.conf 파일에 따라 포트 구성, listening 시작

4. Beego 조직 구조 conf

Controllers

이 디렉토리는 컨트롤러 파일이 저장되는 곳입니다. 소위 컨트롤러는 애플리케이션이 호출하는 비즈니스 로직을 제어하는 ​​역할을 하며, 컨트롤러는 HTTP 요청을 처리합니다. 프런트 엔드 호출자에게 반환합니다.

데이터 계층: 모델

모델 계층은 엔터티 계층 또는 데이터 계층으로 해석될 수 있습니다. 사용자 및 비즈니스 데이터 처리는 주로 데이터베이스 테이블과 관련된 일부 작업이 구현됩니다. 이 디렉터리를 실행한 다음 실행 결과 데이터를 컨트롤러 계층으로 반환합니다. 추가, 삭제, 수정, 확인 작업은 모두 모델에서 구현됩니다.

라우팅 계층: 라우터

路由层,即分发,对进来的后天的请求进行分发操作,当浏览器进行一个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) // 表示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是可以自动创建表的,与python的django框架有的一拼。

在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视频教程编程教学

위 내용은 바둑 언어로 beego가 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.