在线文档
https://beego.me/docs/install/bee.md
beego使用Go安装包的形式,需要提前安装好go环境
go get github.com/beego/bee
【beego|beego 基本操作及配置信息】beego 升级 go 方式升级
Go 升级,通过该方式用户可以升级 beego 框架,强烈推荐该方式:
go get -u github.com/astaxie/beego
安装完之后,bee 可执行文件默认存放在 $GOPATH/bin 里面
所以您需要把 $GOPATH/bin 添加到您的环境变量中,之前已经配置Go环境
# cat .bash_profile
export GOPATH=/Users/victor/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
bee常用命令详解
bee command 项目名
new新建一个web项目,该命令必须在 $GOPATH/src 下执行。最后会在 $GOPATH/src 相应目录下生成如下目录结构的项目:
runbee run 命令是监控 beego 的项目,但是注意该命令必须在 $GOPATH/src/appname 下执行。
pack目录用来发布应用的时候打包,会把项目打包成 zip 包
api新建一个api,bee api apiproject
version这个命令是动态获取 bee、beego 和 Go 的版本
generate这个命令是用来自动化的生成代码的
migrate这个命令是应用的数据库迁移命令,主要是用来每次应用升级,降级的SQL管理
创建一个项目,进入到$GOPATH/src目录下
[victor@victor ~]$ cd $GOPATH/src
[victor@victor ~/go/src]$ pwd
/Users/victor/go/src
[victor@victor ~/go/src]$ ls
github.com
[victor@victor ~/go/src]$ bee new mysite[victor@victor ~/go/src]$ tree mysite/
mysite/
├── conf
│└── app.conf
├── controllers
│└── default.go
├── main.go
├── models
├── routers
│└── router.go
├── static
│├── css
│├── img
│└── js
│└── reload.min.js
├── tests
│└── default_test.go
└── views
└── index.tpl
从目录结构中我们也可以看出来这是一个典型的 MVC 架构的应用,main.go 是入口文件。
App配置
beego
会自动解析 conf
目录下面的配置文件 app.conf
通过修改配置文件的相关属性,可以定义,开启的端口,应用名称等信息- appname
应用名称,即通过 bee new 创建的项目名
- runmode
应用运行的模式,可自行设置选值prd、dev、test
- MaxMemory
文件上传默认内存缓存大小,默认值是 1 << 26(64M)。
- DirectoryIndex
是否开启静态目录的列表显示,默认不显示目录,
- StaticDir
静态文件目录设置,默认是static
可配置单个或多个目录
单个目录, StaticDir = download. 相当于 beego.SetStaticPath("/download",“download”)
多个目录, StaticDir = download:down download2:down2. 相当于
beego.SetStaticPath("/download",“down”) 和 beego.SetStaticPath("/download2",“down2”)
- EnableGzip
是否开启 gzip 支持,默认为 false 不支持 gzip,一旦开启了 gzip那么在模板输出的内容会进行 gzip 或者 zlib 压缩,根据用户的 Accept-Encoding 来判断。
- StaticExtensionsToGzip
允许哪些后缀名的静态文件进行 gzip 压缩,默认支持 .css 和 .js
StaticExtensionsToGzip = .css, .js
- HTTPAddr
应用监听地址,默认为空,监听所有的网卡 IP
HTTPAddr = 10.113.2.36
- EnableHTTPS
是否启用 HTTPS,默认是 false 关闭。当需要启用时,先设置 EnableHTTPS = true,并设置 HTTPSCertFile 和 HTTPSKeyFile
beego.BConfig.Listen.EnableHTTPS = false
- HTTPSAddr
应用监听地址,默认为空,监听所有的网卡 IP。
beego.BConfig.Listen.HTTPSAddr = “”
- HTTPSPort
应用监听端口,默认为 10443
beego.BConfig.Listen.HTTPSPort = 10443
- HTTPSCertFile
开启 HTTPS 后,ssl 证书路径,默认为空。
beego.BConfig.Listen.HTTPSCertFile = “conf/ssl.crt”
- HTTPSKeyFile
开启 HTTPS 之后,SSL 证书 keyfile 的路径。
beego.BConfig.Listen.HTTPSKeyFile = “conf/ssl.key”
appname = mysite
# httpport = 8080
# runmode = dev
runmode = prdStaticDir = down1
DirectoryIndex = true
HTTPAddr = 10.113.2.36# 开发环境
[dev]
httpport = 8080# 测试环境
[prd]
httpport = 8082
路由设置 使用beego.Router,这个函数的功能是映射URL到controller,
第一个参数是Url
第二个参数是对应的Controller,也就是我们即将把请求分发到那个控制器来执行相应的逻辑
示例
### 可以看到引入了一个包,这个包只引入了里面的init函数
# 通过访问/user 去执行 UserController 的逻辑package routersimport (
"mysite/controllers"
"github.com/astaxie/beego"
)func init() {
beego.Router("/", &controllers.MainController{})
# 设置路由
beego.Router("/user", &controllers.UserController{})
}# Controller配置文件
package controllersimport "github.com/astaxie/beego"type UserController struct {
beego.Controller
}func (u *UserController) Get() {
u.Data["Name"] = "Victor"
u.Data["Age"] = 20
u.TplName = "user.html"
}
Controller
beego.Controller 拥有很多方法,(Init、Prepare、Post、Get、Delete、Head)
模板的渲染
文件、文件夹必须小写当然也可以不使用模版,直接用 this.Ctx.WriteString 输出字符串,如:func (this *MainController) Get() {
this.Ctx.WriteString("hello")
}
View
默认支持 tpl 和 html 的后缀名,调用和Go的模板语法一样
beego 默认注册了 static 目录为静态处理的目录,注册样式:URL 前缀和映射的目录(在/main.go文件中beego.Run()之前加入):StaticDir["/static"] = "static"可以设置多个静态文件处理目录,例如你有多个文件下载目录 download1、download2,你可以这样映射(在 /main.go 文件中 beego.Run() 之前加入):beego.SetStaticPath("/down1", "download1")
beego.SetStaticPath("/down2", "download2")这样用户访问 URL
http://localhost:8080/down1/123.txt 则会请求 download1 目录下的 123.txt 文件。
``
推荐阅读
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 【golang】leetcode中级-字母异位词分组&无重复字符的最长子串
- 彻底理解Golang Map
- kratos线上开源年会它来啦~
- 深入浅出 Golang 资源嵌入方案(go-bindata篇)
- 深入浅出 Golang 资源嵌入方案(前篇)