ThinkGo 是一款 Go 語言編寫的 web 快速開發框架

jopen 8年前發布 | 67K 次閱讀 Google Go/Golang開發 thinkgo - Go - GitHub

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!