<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 1.概述 實際項目業務功能和模塊會很多,我們不可能把所有代碼都寫在一個go文件里面或者寫在一個main入口函數里面;我們需要對項目結構做一些規劃,方便維護代碼以及擴展。 > Gin框沒有對項目結構做出限制,我們可以根據自己項目需要自行設計。 ## 2.項目結構 - 有視圖模板 ```shell ├── conf #項目配置文件目錄 │ └── config.toml #大家可以選擇自己熟悉的配置文件管理工具包例如:toml、xml等等 ├── controllers #控制器目錄,按模塊存放控制器(或者叫控制器函數),必要的時候可以繼續劃分子目錄。 │ └── user.go ├── models #模型目錄,負責項目的數據存儲部分,例如各個模塊的Mysql表的讀寫模型。 │ ├── food.go │ └── user.go ├── static #靜態資源目錄,包括Js,css,jpg等等,可以通過Gin框架配置,直接讓用戶訪問。 │ ├── css │ ├── images │ └── js ├── logs #日志文件目錄,主要保存項目運行過程中產生的日志。 └── views #視圖模板目錄,存放各個模塊的視圖模板,當然有些項目只有api,是不需要視圖部分,可以忽略這個目錄 │ └── index.html ├── main.go #項目入口,這里負責Gin框架的初始化,注冊路由信息,關聯控制器函數等。 ``` - api開發 ```shell ├── conf #項目配置文件目錄 │ └── config.toml #大家可以選擇自己熟悉的配置文件管理工具包例如:toml、xml等等 ├── controllers #控制器目錄,按模塊存放控制器(或者叫控制器函數),必要的時候可以繼續劃分子目錄。 │ └── user.go ├── models #模型目錄,負責項目的數據存儲部分,例如各個模塊的Mysql表的讀寫模型。 │ ├── food.go │ ├── user.go │ └── init.go #模型初始化 ├── logs #日志文件目錄,主要保存項目運行過程中產生的日志。 ├── main.go #項目入口,這里負責Gin框架的初始化,注冊路由信息,關聯控制器函數等。 ``` 以上兩種目錄結構基本上大同小異,一般的項目構建都可以使用這樣的項目結構,清晰明了。 ## 3.項目結構擴展 對于一般的項目都是使用上面的目錄結構,但是有時候項目復雜了,會進一步拆分,把數據校驗,模型定義,數據操作,服務,響應進行解耦。 ```shell 數據校驗->控制器->調用服務->數據操作->數據模型->數據響應 ``` 目錄結構如下: ```shell ├── conf #項目配置文件目錄 │ └── config.toml #大家可以選擇自己熟悉的配置文件管理工具包例如:toml、xml、ini等等 ├── requests #定義入參即入參校驗規則 │ └── user_request.go │ └── food_request.go ├── responses #定義響應的數據 │ └── user_response.go │ └── food_response.go ├── services #服務定義目錄 | └── v1 #服務v1版本 │ | └── user_service.go │ | └── food_service.go | └── v2 #服務v2版本 │ | └── user_service.go │ | └── food_service.go ├── api #api目錄,按模塊存放控制器(或者叫控制器函數),必要的時候可以繼續劃分子目錄。 │ └── v1 #apiv1版本 │ | └── user.go │ | └── food.go │ └── v2 #apiv2版本 │ | └── user.go │ | └── food.go ├── router #路由目錄 │ └── v1 #路由v1版本 │ | └── user.go │ | └── food.go │ └── v2 #路由v2版本 │ | └── user.go │ | └── food.go ├── init.go #路由初始化 ├── pkg #自定義的工具類等 │ └── e #項目統一的響應定義,如錯誤碼,通用的錯誤信息,響應的結構體 │ └── util #工具類目錄 ├── models #模型目錄,負責項目的數據存儲部分,例如各個模塊的Mysql表的讀寫模型。 │ ├── food.go │ ├── user.go │ └── init.go #模型初始化 ├── repositories #數據操作層,定義各種數據操作。 │ └── user_repository.go │ └── food_repository.go ├── logs #日志文件目錄,主要保存項目運行過程中產生的日志。 ├── main.go #項目入口,這里負責Gin框架的初始化,注冊路由信息,關聯控制器函數等。 ``` 通過上面的項目結構擴展,增加了代碼量,但是把各層的職責界定了,每一層的只做每一層的事情,數據解耦 > 更多內容請關注我的博客[SOCKSTACk](https://www.sockstack.cn)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看