ThinkGo Go 语言 Web 框架 ThinkGo

xuanbao • 5940 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
ThinkGo 是一款 Go 语言编写的 web 快速开发框架。它基于开源框架 Gin 进行二次开发,旨在实现一种类 ThinkPHP 的高可用、高效率的 web 框架。在此感谢 [Gin](https://github.com/gin-gonic/gin) 和 [httprouter](https://github.com/julienschmidt/httprouter)。它最显著的特点是模块、控制器、操作三段式的标准 MVC 架构,且模块与插件的目录结构完全一致,令开发变得非常简单灵活。 [![ThinkGo Admin](http://static.oschina.net/uploads/img/201601/16202035_sq8e.jpg)](https://github.com/henrylee2cn/thinkgo/raw/master/doc/server.jpg) [![ThinkGo Admin](http://static.oschina.net/uploads/img/201601/16202047_3Cwd.jpg)](https://github.com/henrylee2cn/thinkgo/raw/master/doc/admin.jpg) ## [ ](#目录结构)目录结构 <pre>├─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 上传根目录</pre> ## [ ](#安装)安装 <pre class="brush:shell;toolbar: true; auto-links: false;">go get github.com/henrylee2cn/thinkgo</pre> <pre class="brush:shell;toolbar: true; auto-links: false;">解压 application.zip 至项目根目录(示例)</pre> ## [ ](#使用说明)使用说明 #### [ ](#maingo)main.go <pre class="brush:cpp ;toolbar: true; auto-links: false;">package mainimport (     _ &#34;github.com/henrylee2cn/thinkgo/application&#34;&#34;github.com/henrylee2cn/thinkgo/core&#34;)func main() {     core.ThinkGoDefault().// 以下为可选设置TemplateDelims(&#34;{{{&#34;,&#34;}}}&#34;).TemplateSuffex(&#34;.html&#34;).TemplateFuncs(map[string]interface{}).Use(middleware1,middleware2,middleware3,...).// 启动服务Run(&#34;:8080&#34;) }</pre> #### [ ](#定义模块插件)定义模块/插件 <pre class="brush:cpp ;toolbar: true; auto-links: false;">package applicationimport (&#34;github.com/henrylee2cn/thinkgo/application/admin/conf&#34;. &#34;github.com/henrylee2cn/thinkgo/application/admin/controller&#34;. &#34;github.com/henrylee2cn/thinkgo/core&#34;)func init() {ModulePrepare(&amp;Module{// 定义插件时改为: AddonPrepare(&amp;Module{Name:        conf.NAME,         Class:       conf.CLASS,         Description: conf.DESCRIPTION,     }).SetThemes(// 自动设置传入的第1个主题为当前主题&amp;Theme{             Name:        &#34;default&#34;,             Description: &#34;default&#34;,             Src:         map[string]string{},         },         &amp;Theme{             Name:        &#34;blue&#34;,             Description: &#34;blue&#34;,             Src:         map[string]string{&#34;img&#34;:&#34;/public/banner.jpg&#34;,             },         },     ).// 指定当前主题UseTheme(&#34;blue&#34;).// 中间件// Use(...).// 注册路由,且可添加中间件GET(&#34;/index?addon&#34;, &amp;IndexController{}).HEAD(&#34;/to&#34;, &amp;IndexController{}).DELETE(&#34;/del/:addon&#34;, someHandlerFunc, &amp;IndexController{}).POST(&#34;/add&#34;, &amp;IndexController{}, someHandlerFunc).PUT(&#34;/ReadMail&#34;, someHandlerFunc, &amp;ReadController{}, someHandlerFunc).PATCH(&#34;/ReadMail&#34;, someHandlerFunc, &amp;ReadController{}, someHandlerFunc).OPTIONS(&#34;/ReadMail&#34;, someHandlerFunc, &amp;ReadController{}, someHandlerFunc) }</pre> #### [ ](#定义控制器)定义控制器 <pre class="brush:cpp ;toolbar: true; auto-links: false;">package controllerimport (&#34;github.com/henrylee2cn/thinkgo/application/admin/common&#34;)type IndexController struct {     common.BaseController}func (this *IndexController) Index() {// 当url类似 &#34;/admin/index/index?addon=mail&#34; 时,这样获取参数id := this.Query(&#34;addon&#34;)if id == &#34;&#34; {// 当url类似 &#34;/admin/index/index/mail&#34; 时,这样获取参数id = this.Param(&#34;addon&#34;)     }// 传入模板变量this.Data[&#34;name&#34;] = &#34;henrylee2cn&#34;// 渲染模板并写回响应流this.HTML() }</pre> ## [ ](#开源协议)开源协议 ThinkGo 项目采用商业应用友好的 [MIT](https://github.com/henrylee2cn/thinkgo/raw/master/doc/LICENSE) 协议发布。
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
5940 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传