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

jopen 10年前

ThinkGo Web Framework

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

ThinkGo 是一款 Go 语言编写的 web 快速开发框架。它基于开源框架 Gin 进行二次开发,旨在实现一种类 ThinkPHP 的高可用、高效率的 web 框架。在此感谢 Gin 和 httprouter。它最显著的特点是模块、控制器、操作三段式的标准 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