beego|beego 基本操作及配置信息

在线文档

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 文件。 ``

    推荐阅读