1. 程式人生 > >golang實戰使用gin+xorm搭建go語言web框架restgo詳解2 框架基本架構

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,該目錄下存放公共模板如用於統一設定headhead.html,用於統一設定底部的foot.html,用於統一錯誤頁面的error.html

2、 應用模組目錄,我們強烈建議每一個模組用一個目錄來獨立存放,該方式結構接單清晰明瞭.

3、 假設使用者模組有註冊,登入,密碼找回,

個人資料等四個邏輯頁面,那麼我們可以建立User模組,下轄登入頁面login.html,註冊頁面 register.html,密碼重置頁面resetpwd.html,個人資料頁面profile.html.

2.4 靜態資源asset

該目錄主要用於存放靜態資源,一般情況下,該目錄下存放如下幾個子目錄

1、 image,用於存放靜態圖片檔案

2、 css,用於存放css檔案

3、 js,用於存放js檔案.我們常頁面的js邏輯檔案也投放到該目錄下,該目錄可以建立子目錄,view下的子目錄一一對應

4、 font,一般情況下,我們使用bootstrap框架時,會用到字型檔案,那該資料夾用於儲存字型檔案

5、 plugin,該資料夾用於存放較大的外掛

,kindedit外掛,bootstarp,adminlte.等,在這裡,我們將包含cssjs或者image的檔案包叫做外掛

靜態資源獨立存放是有好處的,將來可以非常方別地實施動靜態分離.

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.天天任務清單小程式

https://github.com/winlion/dailytask

10.工業大資料採集

10.restgo cms 

10.restgo 千人大群


作者簡介:胡文林,持續創業者,長期從事技術開源工作。微訊號jiepool-winlion