【Golang】 beego 开发个人博客

个人博客

作为一名web开发者,开发一个个人博客是一个很简单的事情,正好最近学习了 beego ,正好借助它能够快速开发的特点,快速开发一个个人博客。

beego

beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。

beego 相对其他 golang 框架在开发速度方面有很大优势。

mvc

这里为了快速开发,选用 mvc 的架构。

项目目录:

├─conf
├─controllers
├─models
│  └─option
├─routers
├─static
│  ├─css
│  ├─fonts
│  ├─img
│  └─js
├─utils
│  └─singleton
└─views

Models

链接数据库,注册数据结构模型,对数据库进行操作

type Option struct {
	Id    int    `orm:"column(id);auto"`
	Name  string `orm:"column(name);size(30)"`
	Value string `orm:"column(value)"`
}

func (m *Option) Read(fields ...string) error {
	if err := orm.NewOrm().Read(m, fields...); err != nil {
		return err
	}
	return nil
}

views

golang 采用类似Angular 的模板语法,将controller 层传入的数据进行渲染,形成 html

代码片:


双花括号的模板语法、range 循环、 | 过滤器,和前端框架很像

controllers

controller 作用于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。


type MainController struct {
	baseController
}

func (this *MainController) Index() {
	var list []*models.Post

	query := new(models.Post).Query().Filter("status", 0).Filter("urltype", 0)
	count, _ := query.Count()
	if count > 0 {
		query..All(&list)
	}
	this.Data["list"] = list
	this.TplName = "index.html"
}

routers

路由绑定 Index 函数

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

main

main.go

func main() {
	if beego.AppConfig.String("runmode") == "dev" {
		orm.Debug = true
	}

	beego.Run()
}


你可能感兴趣的:(【Golang】 beego 开发个人博客)