golang之beego初实践
- beego目录结构
经历过上篇文章的过程,你应该可以看到以下的结构
从以上目录可以看出是典型的MVC框架
M(models目录)、V(views目录)、C(controllers目录)的结构。
conf: beego 默认配置文件目录
Models 模型
views 视图
controllers 控制器
routers 路由
main.go是入口文件
MVC 架构程序的工作流程:
(1)用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX 请求等
(2)服务端 Controller 控制器接收到请求后对请求进行解析,找到相应的 Model 对用户请求进行处理
(3)Model 处理后,将处理结果再交给 Controller
(4)Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应 View 页面。页面经渲染(数据填充)后,再发送给客户端。
实践
- 在models 新建page.go
//定义包名
package models
//需要解析的字段
type Page struct {
Id int
Name string
Sex string
Age string
}
//定义GetPage方法,并将需要解析的字段赋值
/*
注意:
go语言 需要每个首字母大写
*/
func GetPage() Page {
submit := Page{Name: "bear", Sex: "boy", Age: "18"}
return submit
}
- 找到controllers中default.go(也可以自定义一个控制器文件)
package controllers
//需要注意的是 hello/models 在环境变量配置的src路径下
import (
"hello/models"
beego "github.com/beego/beego/v2/server/web"
)
type MainController struct {
beego.Controller
}
//models.GetPage 获取models 里page.go里的GetPage方法
func (c *MainController) Get() {
m := models.GetPage()
c.Data["Name"] = m.Name
c.Data["Sex"] = m.Sex
c.Data["Age"] = m.Age
c.TplName = "index.tpl"
}
- 在routers下找到 router.go
package routers
import (
"hello/controllers"
beego "github.com/beego/beego/v2/server/web"
)
//定义路由
func init() {
beego.Router("/", &controllers.MainController{})
}
- views下找到index.tpl
//注意go 渲染数据 {{.变量名}}
<footer>
<div class="author">
<span>{{.Name}}</span>
<span>{{.Sex}}</span>
<span>{{.Age}}</span>
</div>
</footer>
最后 bee run 运行
成功之后在本地起的http服务
浏览器输入 ip:8080 即可