鉴于有学习go语言的必要(其实就是项目需要),故跟着Golang tutorial series文档过了一遍基本语法,当然是不熟悉,然后做了个demo Repository (https://github.com/HelloMrShu/go_bp),最后把一个需要界面的工具重写了一下,在此记录一下,共耗时两周
鉴于是公司项目,故只说核心内容,有问题私信沟通即可
1 架构和流程
2 目录结构
基本目录结构是通过bee工具生成的,这里就加了个utils目录,作为常用工具目录
作者应该是借鉴了php相关框架目录思想,即基本的MVC分层思路,配置、控制器、模型、路由、静态文件、测试、视图,以及入口文件main.go
3 运行
这里借助bee工具,bee run 启动项目(至于怎么安装,请自行搜索,如果被墙,就下载包,本地安装即可)
4 路由
内容在routers文件里
package routers
import (
"template/controllers"
"github.com/astaxie/beego"
)
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/ae/test", &controllers.RuleController{}, "get:AeTest")
}
第一个默认路由
第二个表示请求localhost:8082/ae/test,访问路径是去controller里的RuleController寻找AeTest方法,如下:
func (c *RuleController) AeTest() {
...
c.Layout = "components/layout.tpl" //指定layout文件
//渲染分页数据到模板,默认模板路径是views/rulecontroller/aetest.tpl
//类似框架通常的路径应该为views/rule/aetest.tpl
//这里的分页插件是根据业务自己写的
c.Data["paginator"] = utils.Set(page, page_size, total)
}
5 模型定义
beego的表定义是struct,beego的orm插件有和mysql类型对应的定义,但好像不全,注意,beego在找表的时候,是遵循驼峰命名的,下面表名为 ex_template,切记
type ExTemplate struct {
Id int32 `orm:"pk"`
Platform string
Bidmode string
Name string
Media string
Special_type string
Content string
Is_delete int8
}
6 注册数据库和模型
务必注册一个alias为default的数据库
model1.go
func init() {
orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/test?charset=utf8", 30)
//注册模型
orm.RegisterModel(new(ExTemplate))
}
model2.go
func init() {
//再注册一个db
orm.RegisterDataBase("test1", "mysql", "root:root@tcp(127.0.0.1:3306)/test1?charset=utf8", 30)
}
注册多个db,就涉及到切换的问题,切记
//如果查询的是default的表
o := orm.NewOrm()
qs := o.QueryTable("ex_template_test")
//如果需要切换db
o := orm.NewOrm()
o.Using("test1")
qs := o.QueryTable("ex_template_test")
7 静态文件
自定义的静态文件比较简单,如果你定义了自己的css,js等,如下引入即可
<script src="/static/js/exrule.js"></script>
这就是简单的入门内容,高级功能请自行学习
参考文档
1 go手册,https://golangbot.com/learn-golang-series/
2 beego文档,https://beego.me/docs/intro/