用 go 实现一个简单的 mvc
go-simple-mvc
从这个文档build-web-application-with-golang学习到很多。
下载
git clone https://github.com/jc91715/go-simple-mvc
安装依赖
go get github.com/astaxie/beego
go get github.com/go-sql-driver/mysql
运行
go run main.go
访问 localhost:9090
使用说明
1 添加路由
在routes/web.go
中
a.AddRoute("/posts/:post_id([0-9]+)", map[string]string{
"GET": "Show",//对应PostController的Show方法
}, &controller.PostController{})
2 创建控制器
在controller
下创建PostController.go
package controller
//导入要用到的包
type PostController struct {
Controller
}
func (c *PostController) Show() {//添加方法
}
3 模型
使用的beego-orm
package model
type RainlabBlogPosts struct {
Id int
Title string
ContentHtml string
}
使用
o := orm.NewOrm()
post := model.RainlabBlogPosts{Id: id}
4 视图
在 view
文件夹下
抽离出header.tpl
和footer.tpl
{{define "header"}}
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>go-simple-mvc</title>
<style>
body{
margin:30px;
}
</style>
</head>
<body>
{{end}}
{{define "footer"}}
</body>
</html>
{{end}}
例子 post/show.tpl
{{define "show"}}
{{template "header"}}
<div style="text-align:center">
<a href="/" >回首页</a>
</div>
<div style="width:80%;margin-left:10%">
{{.}}
</div>
{{template "footer"}}
{{end}}
控制器调用视图
s1, _ := template.ParseFiles("view/layout/header.tpl", "view/post/show.tpl", "view/layout/footer.tpl")//装载视图
s1.ExecuteTemplate(c.Ct.ResponseWriter, "show", "string")
数据库表结构结构
CREATE TABLE `rainlab_blog_posts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`content_html` longtext COLLATE utf8mb4_unicode_ci,
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
本作品采用《CC 协议》,转载必须注明作者和本文链接
go get 有像composer那样的国内镜像吗?下载太慢了,而且有些需要从被墙的golang.org下载