golang實戰使用gin+xorm搭建go語言web框架restgo詳解2 框架基本架構
2、框架基本結構
一個典型的專案框架,資料夾目錄如下,下面我們來逐一說明這些資料夾或檔案的作用.
2.1 控制器資料夾controller
該目錄主要儲存控制器檔案,特別地,我們做如下約定
1、 檔名稱首字母一律大寫,後面必須新增Controller結尾,用做標識這是控制器檔案,如UserCtrl,我們就能一目瞭然地看到這是一個控制器檔案
2、 我們約定控制器檔名必須和業務強相關,比如使用者相關的控制器,我們需要設計檔名為UserCtrl.go,資源管理相關的控制器,我們需要設計名稱為AttachCtrl
3、 檔名稱一律區分大小寫
2.2 實體目錄entity
該目錄主要儲存資料庫對應模型檔案,和java類似
1、 檔名稱首字母一律大寫,並與資料庫內對應的表名稱保持一致。
2、 資料庫表名稱中,以下劃線開頭的字母,對應的實體類中相應的欄位必須大寫.如user_info類,對應的實體名稱必須為UserInfo.go
3、 檔名稱一律區分大小寫
2.3 檢視目錄view
檢視目錄主要包括如下子目錄
1、 公共模板目錄public,該目錄下存放公共模板如用於統一設定head的head.html,用於統一設定底部的foot.html,用於統一錯誤頁面的error.html
2、 應用模組目錄,我們強烈建議每一個模組用一個目錄來獨立存放,該方式結構接單清晰明瞭.
3、 假設使用者模組有註冊,登入,密碼找回,
2.4 靜態資源asset
該目錄主要用於存放靜態資源,一般情況下,該目錄下存放如下幾個子目錄
1、 image,用於存放靜態圖片檔案
2、 css,用於存放css檔案
3、 js,用於存放js檔案.我們常頁面的js邏輯檔案也投放到該目錄下,該目錄可以建立子目錄,和view下的子目錄一一對應
4、 font,一般情況下,我們使用bootstrap框架時,會用到字型檔案,那該資料夾用於儲存字型檔案
5、 plugin,該資料夾用於存放較大的外掛
靜態資源獨立存放是有好處的,將來可以非常方別地實施動靜態分離.
2.5 業務層目錄service
Service資料夾用於存放業務層邏輯,所謂業務層是指具體某一業務實現的方式,對外提供介面,對內呼叫資料庫操作。業務層命名我們做如下約定
1、 所有業務邏輯名稱首字母必須大寫,且只能為字母。
2、 所有業務邏輯檔案必須以Service結尾
打個比方,對於使用者業務邏輯,我們定義檔名稱UserService.go即可
2.6 引數封裝層model
我們將每一個業務的請求引數封裝成一個struct,比如說,對於使用者管理模組,我們可能用到根據關鍵字如姓名、電話等查詢使用者資訊、根據註冊時間查詢使用者資訊的,以及分頁支援、排序支援等。因此我們可以將這些引數封裝成一個bean,比如本例子中我們可以作如下封裝
type PageArg struct{
Kword string `form:”kword” json:”kword”`
Datefrom time.Time `form:”datefrom” json:”datefrom”`
Dateto time.Time `form:”dateto” json:”dateto”`
Desc string `form:”desc” json:”desc”`
Asc string `form:”asc” json:”asc”`
Pagefrom int `form:”pagefron” json:”pagefrom”`
Pagesize int `form:”pagesize” json:”pagesize”`
}
考慮到有些引數是常用的,我們可以將UserArg做如下定義
Type UserArg struct{
PageArg
//…… other arg
}
2.7 核心包restgo
核心包內建我們的應用管理框架以及我們我們需要用到的括常用的工具類軟體,具體描述如下
1、 orm封裝工具OrmEngin.go
2、 常用自定義函式數FunMap.go
3、 引數響應結果封裝Result.go
4、 驗證碼管理Captcha.go
5、 網路訪問模組Http.go
6、 加密方法封裝Crypto.go
7、 應用管理模組Restgo.go
其他需要擴張的使用者可以自行新增
2.8 配置目錄config
配置存放目錄在config下,具體內容如下
1、 日誌配置檔案log4g.xml
2、 應用配置檔案application. Properties
其他配置檔案可以自行新增
2.9 其他
應用啟動檔案main.go位於跟目錄下
待提供原始碼清單
10.1 restgo後臺管理框架
https://github.com/winlion/restgo-admin
10.2 天天任務清單小程式
https://github.com/winlion/dailytask
10.3 工業大資料採集
10.4 restgo cms
10.5 restgo 千人大群
作者簡介:胡文林,持續創業者,長期從事技術開源工作。微訊號jiepool-winlion