ThinkGo Go 语言 Web 框架 ThinkGo

xuanbao2016-01-15 16:00:00 • 6192 次点击    
这是一个分享于 2016-01-15 16:00:00 的项目,其中的信息可能已经有所发展或是发生改变。

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

ThinkGo Admin

ThinkGo Admin

[

](#目录结构)目录结构

├─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 至项目根目录(示例)

[

](#使用说明)使用说明

[

](#maingo)main.go

package mainimport (
    _ "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 applicationimport ("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 controllerimport ("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 协议发布。

Latest commit to the undefined branch on unknown
Download as zip
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
6192 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传