Go 的 MVC 框架:utron

jopen 8年前

utron是一个 Go 语言轻量级的 MVC 框架,用于快速构建可伸缩以及可靠的数据库驱动的 Web 应用。

特性:

  • Postgres, MySQL 和 Foundation 数据库支持

  • 模块化

  • 支持中间件,所有 alice 兼容的中间件都可以使用

  • Gopher spirit (可使用 Go 语言的其他库)

  • 轻量级,只包含 MVC

  • 支持多配置文件,包括 json、yaml 和 toml

控制器示例代码:

package controllers     import (      "net/http"      "strconv"         "github.com/gernest/utron"      "github.com/gernest/utron/fixtures/todo/models"      "github.com/gorilla/schema"  )     var decoder = schema.NewDecoder()     type TODO struct {      *utron.BaseController      Routes []string  }     func (t *TODO) Home() {      todos := []*models.Todo{}      t.Ctx.DB.Order("created_at desc").Find(&todos)      t.Ctx.Data["List"] = todos      t.Ctx.Template = "index"      t.HTML(http.StatusOK)  }  func (t *TODO) Create() {      todo := &models.Todo{}      req := t.Ctx.Request()      req.ParseForm()      if err := decoder.Decode(todo, req.PostForm); err != nil {          t.Ctx.Data["Message"] = err.Error()          t.Ctx.Template = "error"          t.HTML(http.StatusInternalServerError)          return      }         t.Ctx.DB.Create(todo)      t.Ctx.Redirect("/", http.StatusFound)  }     func (t *TODO) Delete() {      todoID := t.Ctx.Params["id"]      ID, err := strconv.Atoi(todoID)      if err != nil {          t.Ctx.Data["Message"] = err.Error()          t.Ctx.Template = "error"          t.HTML(http.StatusInternalServerError)          return      }      t.Ctx.DB.Delete(&models.Todo{ID: ID})      t.Ctx.Redirect("/", http.StatusFound)  }     func NewTODO() *TODO {      return &TODO{          Routes: []string{              "get;/;Home",              "post;/create;Create",              "get;/delete/{id};Delete",          },      }  }     func init() {      utron.RegisterController(NewTODO())  }

项目主页:http://www.open-open.com/lib/view/home/1443354721620