ThinkGo 是一款 Go 语言编写的 web 快速开发框架

jopen 8年前

ThinkGo Web Framework

ThinkGo 是一款 Go 语言编写的 web 快速开发框架

ThinkGo 是一款 Go 语言编写的 web 快速开发框架。它基于开源框架 Gin 进行二次开发,旨在实现一种类 ThinkPHP 的高可用、高效率的 web 框架。在此感谢 Ginhttprouter。它最显著的特点是模块、控制器、操作三段式的标准 MVC 架构,且模块与插件的目录结构完全一致,令开发变得非常简单灵活。

  • 官方QQ群:Go-Web 编程 42730308

ThinkGo 是一款 Go 语言编写的 web 快速开发框架

ThinkGo 是一款 Go 语言编写的 web 快速开发框架

目录结构

  ├─main.go 主文件  │   ├─core 框架目录  ├─application 应用模块目录  │  ├─example.go 模块定义文件  │  ├─example 模块目录  │  │  ├─conf 配置文件目录  │  │  ├─common 公共文件目录  │  │  ├─controller 控制器目录  │  │  ├─model 模型目录  │  │  └─view 视图文件目录  │  │      └─default 主题文件目录  │  │          ├─__public__ 资源文件目录  │  │          └─xxx 控制器模板目录  │  │  │  ├─example2.go 插件定义文件  │  ├─example2 插件目录  │  │  ├─conf 配置文件目录  │  │  ├─common 公共文件目录  │  │  ├─controller 控制器目录  │  │  ├─model 模型目录  │  │  └─view 视图文件目录  │  │      └─default 主题文件目录  │  │          ├─__public__ 资源文件目录  │  │          └─xxx 控制器模板目录  │  │  │  └─... 扩展的可装卸功能模块或插件  │  ├─common 公共文件目录  │  ├─deploy 部署文件目录  │  └─utils 工具集  │  ├─model 模型目录  ├─conf 配置文件目录  └─uploads 上传根目录

安装

  go get github.com/henrylee2cn/thinkgo
  解压 application.zip 至项目根目录(示例)

使用说明

main.go

  package main    import (      _ "github.com/henrylee2cn/thinkgo/application"      "github.com/henrylee2cn/thinkgo/core"  )    func main() {      core.ThinkGoDefault().      // 以下为可选设置      TemplateDelims("{{{","}}}").      TemplateSuffex(".html").      TemplateFuncs(map[string]interface{}).      Use(middleware1,middleware2,middleware3,...).      // 启动服务      Run(":8080")  }

定义模块/插件

  package application    import (      "github.com/henrylee2cn/thinkgo/application/admin/conf"      . "github.com/henrylee2cn/thinkgo/application/admin/controller"      . "github.com/henrylee2cn/thinkgo/core"  )    func init() {      ModulePrepare(&Module{      // 定义插件时改为: AddonPrepare(&Module{          Name:        conf.NAME,          Class:       conf.CLASS,          Description: conf.DESCRIPTION,      }).SetThemes(          // 自动设置传入的第1个主题为当前主题          &Theme{              Name:        "default",              Description: "default",              Src:         map[string]string{},          },          &Theme{              Name:        "blue",              Description: "blue",              Src:         map[string]string{                  "img":"/public/banner.jpg",              },          },      ).          // 指定当前主题          UseTheme("blue").          // 中间件          // Use(...).          // 注册路由,且可添加中间件          GET("/index?addon", &IndexController{}).          HEAD("/to", &IndexController{}).          DELETE("/del/:addon", someHandlerFunc, &IndexController{}).          POST("/add", &IndexController{}, someHandlerFunc).          PUT("/ReadMail", someHandlerFunc, &ReadController{}, someHandlerFunc).          PATCH("/ReadMail", someHandlerFunc, &ReadController{}, someHandlerFunc).          OPTIONS("/ReadMail", someHandlerFunc, &ReadController{}, someHandlerFunc)  }

定义控制器

  package controller    import (      "github.com/henrylee2cn/thinkgo/application/admin/common"  )    type IndexController struct {      common.BaseController  }    func (this *IndexController) Index() {      // 当url类似 "/admin/index/index?addon=mail" 时,这样获取参数      id := this.Query("addon")      if id == "" {      // 当url类似 "/admin/index/index/mail" 时,这样获取参数          id = this.Param("addon")      }      // 传入模板变量      this.Data["name"] = "henrylee2cn"      // 渲染模板并写回响应流      this.HTML()  }

开源协议

ThinkGo 项目采用商业应用友好的 MIT 协议发布。
 

项目地址: https://github.com/henrylee2cn/thinkgo