ThinkGo 是一款 Go 語言編寫的 web 快速開發框架
ThinkGo Web Framework
ThinkGo 是一款 Go 語言編寫的 web 快速開發框架。它基于開源框架 Gin 進行二次開發,旨在實現一種類 ThinkPHP 的高可用、高效率的 web 框架。在此感謝 Gin 和 httprouter。它最顯著的特點是模塊、控制器、操作三段式的標準 MVC 架構,且模塊與插件的目錄結構完全一致,令開發變得非常簡單靈活。
- 官方QQ群:Go-Web 編程 42730308
目錄結構
├─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 協議發布。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!