Beego Framework

方便开发 Go Web 应用的开源框架

文档地址:https://beego.me/docs/intro

Beego Framework

[TOC]

安装

  1. 安装BeeGo

go get github.com/astaxie/beego

  1. 安装BeeGo工具

go get github.com/beego/bee

bee的可执行文件默认存放在 $GOPATH/bin 里面,所以需要把 $GOPATH/bin 添加到您的环境变量中。

创建项目

$GOPATH/src中,创建项目文件夹,并进入该文件夹中.

输入bee new ProjectName即可创建BeeGo项目。

项目结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ProjectName
|-- conf
| `-- app.conf
|-- controllers
| `-- default.go
|-- main.go
|-- models
|-- routers
| `-- router.go
|-- static
| |-- css
| |-- img
| `-- js
|-- tests
| `-- default_test.go
`-- views
`-- index.tpl

main.go为项目的入口。

Router 路由

1
2
3
4
5
6
7
8
9
10
package routers

import (
"BeeGoDemo/GoSever/controllers"
"github.com/astaxie/beego"
)

func init() {
beego.Router("/", &controllers.MainController{})
}

注册路由:

beego.Router("/", &controllers.MainController{})

这个函数的功能是映射 URL 到 Controller, 然后用户就可以通过访问 这个URL 去执行 Controller 里的逻辑。

Controller 控制器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package controllers

import (
"github.com/astaxie/beego"
)

type MainController struct {
beego.Controller
}

func (c *MainController) Get() {
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
c.TplName = "index.tpl"
}

例子中,声明了一个控制器 MainController,这个控制器里面内嵌了 beego.Controller,这就是 Go 的嵌入方式,也就是 MainController 自动拥有了所有 beego.Controller 的方法。

然后我们可以通过重写 beego.Controller 的方法来实现一些基本功能。比如例子中就重写了 Get() 方法

c.Data 是一个用来存储输出数据的 map,可以赋值任意类型的值。

Model 模型

简单应用不会使用,但是复杂应用是必然使用的。

通常用于处理数据关系。数据库的操作通常就写在model文件夹中,models的文件夹下创建model的对象,所有的关于数据库的操作都是在models中进行的,controller调用models中的方法即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package models

import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)

var (
db orm.Ormer
)

type UserInfo struct {
Id int64
Username string
Password string
}

func init() {
orm.Debug = true
orm.RegisterDataBase("default", "mysql", "name:pw@/test?charset=utf8", 30)
orm.RegisterModel(new(UserInfo))
db = orm.NewOrm()
}

func AddUser(user_info *UserInfo) (int64, error) {
id, err := db.Insert(user_info)
return id, err
}

View 图层

Controller 的案例中,有 c.TplName = "index.tpl" 的语句,表示渲染该模板文件,BeeGo中默认支持 tplhtml。如果想显示其他的就调用 beego.AddTemplateExt 中设置.

因此,我们可以在 views 文件夹中方式我们需要显示的前端文件。

一个简单的例子,我们讲一个内容仅有

<p>Hi BeeGo</p> 的HTML文件放在 views 文件夹中。

并在 controllersGet() 函数中修改为 c.TplName = "showIndex.html",运行项目,浏览器输入网址,就可以显示出一句 “Hi BeeGo” 了。

static文件

项目会默认创建一个存放静态文件的目录

1
2
3
4
├── static
│ ├── css
│ ├── img
│ └── js

如果需要加入新的静态文件目录,比如下载视频之类的。也可以通过 SetStaticPath 注册洗的静态文件目录。

beego.SetStaticPath("/down", "downloadMovie")

这样的话,用户访问 http://$path$/down/hahaha.avi ,就会访问 downloadMovie 文件夹下面的视频。

值得一提的是,这个注册必须在 main.go 文件中 beego.Run() 之前加入。

.bash_profile在zsh中生效 SQL 小计

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×