欢迎访问我的博客,你的支持,是我最大的动力!

Go语言学习笔记(11)-beego框架

Linux 马从东 118℃ 评论
目录:
[显示]

开发文档:https://beego.me/docs/intro/
项目:https://github.com/astaxie/beego
bee工具:https://github.com/beego/bee

beego 八大独立模块高度解耦,可单独使用

安装及命令说明

go get -u github.com/beego/bee
go get -u github.com/astaxie/beego
# bee fix

bee 使用

项目创建、热编译、开发、测试、部署

1、bee new <项目名> 
创建新项目,需要在$GOPATH/src目录下执行,会自动生成必要的工作目录和基本文件

2、bee api <项目名>
新建api应用,没有static和views目录,多了test模块
bee api app -tables="myapp,ext" -driver=mysql -conn="root:passwd@tcp(127.0.0.1:3306)/test"
# 若 conn为空则创建示例项目 否则连接数据库创建项目

3、bee run
热编译,需在$GOPATH/src/<项目名>/ 下执行

4、bee pack
发布应用时,把项目打包成 tar.gz 文件,部署时,直接把压缩包上传,解压就可以了
打包后,只保留 conf/static/views 目录和可执行文件,不会打包源码

5、bee bale
实验,压缩所有静态文件成一个变量申明文件 bale.go 编译时会全部编译到二进制文件里,启动时会进行非覆盖式自解压

6、bee version
动态获取bee、beego、go版本信息

7、bee generate 命令组
自动化生成代码,从数据库一键生成model,scaffold等
bee generate scaffold [scaffoldname] [-fields=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
bee generate model [modelname] [-fields=""]
bee generate controller [controllerfile]
bee generate view [viewpath]
bee generate migration [migrationfile] [-fields=""]
bee generate docs
bee generate test [routerfile]
bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]

8、bee migrate 命令组
数据库迁移命令,应用升降级的SQL管理
bee migrate [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
bee migrate rollback [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
bee migrate reset [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
bee migrate refresh [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]

9、bee dockerize
生成dockerfile文件
bee dockerize -image="library/golang:1.6.4" -expose=9000

bee配置文件:bee源码目录下 bee.json 文件
"watch_ext""watch_ext_static"设置监控的文件后缀

快速入门

新建项目
bee new test
cd test
bee run

beego.Run 执行流程
1、解析配置文件
自动解析 conf/app.conf 配置文件;配置文件中可定义开启的端口、session、应用名称等
2、执行用户 hookfunc
默认注册 mime 用户可通过函数 AddAPPStartHook 注册自己的启动函数
3、是否开启 session
若开启则初始化全局 session
4、是否编译模板
将 views 目录下所有模板预编译 存在map中 可提高运行效率
5、是否开启文档功能
根据 EnableDocs 判断是否开启内置文档路由功能
6、是否启动管理模块
管理模块监听于 8088 端口 可查询到QPS/CPU/内存/GC/goroutine/thread等统计信息 EnableAdmin = true
7、监听服务端口
调用 ListenAndServe

controller 逻辑
this.Data是存储输出数据的map
this.TplName 指定渲染模板,若不指定,默认为 views/<controller名>/<方法名>.tpl 如 views/maincontroller/get.tpl
也可以不使用模板 直接输出 如 this.Ctx.WriteString("hello")

model
若逻辑简单,controller 可以处理一切逻辑,若逻辑中有可以复用的东西,可抽取出来变成模块
通常 model 里处理一些数据读取,如日志处理等

view
模板支持 tpl 和 html 后缀,若要添加其他后缀,可通过 beego.AddTemplateExt 设置
访问数据 {{.Website}}

静态文件处理
静态文件目录注册
beego.SetStaticPath("/down1","download1")
beego.SetStaticPath("/down2","download2")
访问:http://localhost:8080/down1/xxx.xxx 对应于 download1/xxx.xxx

beego MVC架构

controller 设计
参数设置

支持ini xml json yaml格式的配置文件解析,默认ini格式
默认配置文件为 conf/app.conf
beego.BConfig.AppName="beepkg" 这样也可以实现配置的效果

配置文件中可添加自定义配置,如 mysqldb="beego" 获取方式 beego.AppConfig.String("mysqldb")

基础配置:beego.BConfig
加载自定义配置文件:beego.LoadAppConfig("ini","conf/app2.conf") 可加载多个配置文件,同名时最新加载的覆盖旧的

路由设置

固定路由/正则路由/自动路由

固定路由是全匹配的路由

注解路由:// @router /staticblock/:key [get]

控制器
XSRF 跨站请求

开启时,会启动跨站请求检查

 

 

 

 

 

 

 

转载请注明:轻风博客 » Go语言学习笔记(11)-beego框架

喜欢 (0)or分享 (0)