Gohub 項目主要提供的是 Web 服務。且具備命令行功能。我們會將 Web 服務功能封裝到子命令 serve 里。
除了 serve 命令,我們還會有以下命令:
1. key 命令生成 app key
2. make 命令
3. seed 數據填充
4. migrate 數據庫遷移
5. cache 緩存處理
命令的層級是三層結構,超過三層我們會使用標示 (flag) 來實現。
三層結構里, 樹狀結構的最頂層是 APPNAME ,在我們這個項目中是 gohub,用來組織子命令用的。上面羅列的是第二層和第三層命令。
## 命令基礎
### 1. 命令的組成
命令的四個基本組成部分:
* 主命令(APPNAME):命令最頂層;
* 命令(Command):就是需要執行的操作;
* 參數(Arg):參數即要操作的對象;
* 選項(Flag):用以調整命令的行為。
拼在一起:
~~~
$ APPNAME COMMAND ARG --FLAG(-f)
~~~
下面示例中,`server`是一個(子)命令,`--port`是選項:
~~~
$ hugo server --port=1313
~~~
下面示例中,`clone`是一個(子)命令,`URL`是參數,`--bare`是選項:
~~~
$ git clone URL --bare
~~~
### 2. 子命令
一個命令可以有多個子命令,如下面:
~~~
$ gohub migrate rollback
$ gohub make factory
~~~
migrate 和 make 都有各自的子命令。
### 3. 長選項和短選項
定義選項時,我們可以為其定義簡寫版本,一般稱為短選項。
短選項是長選項的簡寫,使用`-`,而長選項是`--`。如:
~~~php
$ gohub serve --port=1313
~~~
等同于:
~~~php
$ gohub serve -p=1313
~~~
### 4. 底層包的實現機制
使用命令行工具包時,要知道他們其實都是在圍繞`os.Args`參數在做功能。萬變不離其宗,不要被工具限制住,當有特殊需求工具無法滿足時候,可以在 os.Args 上做文章。
### 5. 終端輸出
命令行出錯時,除了日志記錄外,還需要有提示反饋給用戶。
雖然本地開發時,日志會打印到終端,但是**線上環境日志只記錄到文件**,所以我們所有命令出錯時,都應該使用命令行輸出提示給用戶。
### 6. 使用英文輸出
輸出提示要使用英文,雖然中文是我們的母語作為提示會更易懂,但是要考慮到很多生產服務器上并沒有設置中文支持,有時會**輸出亂碼**。
所以盡量使用英文提示以適應更多場景。
- 序言
- 基礎
- 安裝GoHub
- 目錄結構
- 開發規范
- 部署項目
- 架構
- 架構總覽
- 生命周期
- 配置
- 配置介紹
- 配置目錄
- 配置格式
- 配置加載
- 讀取配置
- 動態配置
- 環境變量配置
- 路由
- 路由模式
- 路由定義
- 路由參數
- 路由分組
- 路由限流
- 路由拆分
- 控制器
- 控制定義
- 控制器初始化
- 中間件
- Make創建控制器
- 請求
- 請求信息
- 數據庫
- 連接數據庫
- 基本使用
- Make創建模型
- 日志
- 介紹
- 日志驅動
- 日志寫入
- HTTP日志
- 數據庫請求日志
- 錯誤和調試
- Debuger調試器
- 驗證
- 驗證器
- 驗證規則
- Make創建驗證器
- 雜項
- 緩存
- 分頁
- 驗證碼
- CURL請求
- 命令行
- 基礎知識
- console 包
- Cobra 基礎
- 命令行模式
- 附錄
- 配置參考
- 第三方依賴庫