專案介紹
我們將開始使用Gin框架開發一個api專案,我們起名為:雲餐廳。如同餓了麼,美團外賣等生活服務類應用一樣,雲餐廳是一個線上的外賣應用,應用的使用者可以線上瀏覽商家,商品並下單。
該專案分為客戶端和服務端兩端程式。
- 1、客戶端程式通過介面從服務端獲取資料,獲取結果後展示資料。
- 2、服務端程式提供介面Api的訪問功能,執行資料庫操作,並組織資料返回。
客戶端介紹
雲餐廳客戶端使用Vue、ES6、Webpack等技術進行開發,專案開發需要具備前端開發技能,我們聚焦於後端Api功能的開發。
環境準備
執行vue等技術開發的客戶端專案,需要安裝Node.js環境
下載
可以到nodejs的下載頁面: http://nodejs.cn/download/下載對應的安裝包
1.Windows電腦安裝Nodejs環境
- 1、windows環境下選擇.msi安裝檔案。然後進行雙擊node.msi,選擇安裝路徑。
- 2、配置環境變數。在計算機(或者我的電腦)右擊屬性 -> 高階系統設定 -> 環境變數進行配置。新建NODE_PATH變數並設定Nodejs的安裝目錄。
macOS系統安裝Nodejs
在終端中使用brew命令安裝nodejs。詳細命令:
brew install nodejs
Linux系統安裝Nodejs
在nodejs的下載頁面選擇linux類別下的64位檔案,下載檔案為tar.xz格式的壓縮檔案。然後依次執行解壓縮和建立軟連線的命令:
tar -xvf node-v10.15.3-linux-x64.tar.xz
vi /etc/profile
export NODEJS=/opt/node/node-v10.15.3-linux-x64
export PATH=$NODEJS/bin:$PATH
// 儲存/etc/profile檔案後
node -v
// 看版本
服務端介紹
我們著重後端專案開發
建立專案
在gopath的src目錄下,建立OnlineRestaurant目錄,作為服務端專案。
mkdir CloudRestaurant
建立配置檔案目錄
mkdir config
config目錄中,配置app.json配置檔案
{
"app_name": "youmen",
"app_mode": "debug",
"app_host": "localhost",
"app_port": "8090"
}
建立一個tool目錄
裡面建立config.go檔案,用於解析專案配置資訊,config.go如下
type Config struct {
AppName string `json:"app_name"`
AppMode string `json:"app_mode"`
AppHost string `json:"app_host"`
AppPort string `json:"app_port"`
}
var _cfg *Config = nil
func GetConfig() *Config {
return _cfg
}
func ParseConfig(path string) (*Config, error) {
file, err := os.Open(path)
if err != nil {
panic(err)
}
defer file.Close()
reader := bufio.NewReader(file)
decoder := json.NewDecoder(reader)
if err := decoder.Decode(&_cfg); err != nil {
return nil, err
}
return _cfg, nil
}
編寫main.go
func main() {
//讀取配置檔案
cfg, err := toolbox.ParseConfig("./config/app.json")
if err != nil {
toolbox.Error(err.Error())
return
}
app := gin.Default()
app.Run(cfg.AppHost + ":" + cfg.AppPort)
}
編寫hello world
編寫Controller: 建立controller,並建立HelloController。
package controller
import "github.com/gin-gonic/gin"
type HelloController struct {
}
func (hello *HelloController) Router(engine *gin.Engine) {
engine.GET("/hello", hello.Hello)
}
func (hello *HelloController) Hello(context *gin.Context) {
context.JSON(200, map[string]interface{}{
"message": "hello world",
})
}
新增路由
在main.go程式中新增路由設定
func registerRouter(router *gin.Engine) {
new(controller.HelloController).Router(router)
}
專案前端使用及除錯
前端專案目錄說明
本專案的前端專案是使用nodejs的vue框架進行開發而成的。名稱為shop-client。該專案的原始碼如下圖所示:
如上圖所示的是shop-client前端專案.對該前端專案框架作如下解釋說明:
- build:build目錄是指定的專案編譯目錄,該專案的編譯配置相關的操作,都在該目錄中進行配置和指定。
- config:config目錄主要是對專案全域性進行相關的配置,以及測試或者釋出版本進行配置。
- dist:所有的.vue頁面編譯後成為的js檔案,都會輸出到該目錄中。
- node_modules:該目錄是nodejs專案所需要的依賴的第三方庫的程式碼目錄。由於該目錄體積較大,在進行專案遷移或者專案拷貝時,可以將該目錄刪除,在專案的根目錄中執行npm install命令會重新生成並下載所需要的第三方的程式碼庫。
- src:該目錄是存放前端工程專案的原始碼目錄。
- static:該目錄用於存放靜態的檔案,比如js、css檔案等。
- package.json:執行npm init命令會生成該檔案,該檔案是node專案的配置檔案,其中包含專案的編譯和第三方依賴庫依賴資訊等內容。
執行前端專案
安裝好了nodejs環境後,可以使用命令對前端專案進行操作
進入專案中
cd shop-client
常用命令
...
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"lint": "eslint --ext .js,.vue src",
"build": "node build/build.js"
}
...
按照上述的指令碼命令配置,可以實現很多指令功能.
比如說,可以使用如下命令執行編譯專案:
npm run build
因為在scripts指令碼中配置了start命令,只有start命令可以忽略run,當然,npm start會具體執行的命令是npm run dev, 因此可以通過npm run dev命令來執行專案.
請求介面API
在shop-client前端專案的src目錄下的api目錄中,有兩個js檔案,分別為ajax.js檔案和index.js檔案。
- ajax.js檔案:該檔案中封裝了前端專案進行非同步網路請求的方法ajax,該函式包含三個引數,分別是:url、data、type,表示請求路徑,請求引數和請求方法。
- index.js檔案:在該檔案中,引入了ajax.js檔案和其中的ajax方法,定義了基礎請求路徑BASE_URL常量,此專案中的請求埠為8090,與後臺伺服器監聽的埠一致。如果想自己修改伺服器監聽埠,要記得將前端程式碼BASE_URL常量中的埠也要一併修改。另外,在index.js檔案中定義了本專案功能開發所需要的介面,供在.vue檔案中進行使用。
前端頁面vue原始檔
在shop-client前端專案的src目錄下的pages目錄中,存放的是專案的頁面原始檔,頁面原始檔是.vue為副檔名的檔案。
在該專案中,根據專案功能和模組劃分為更詳細的目錄:Login、Msite、Order、Profile、Search、Shop等幾個目錄。
路由檔案
在src目錄下存在有router目錄,其中包含一個index.js檔案,該檔案是前端頁面的路由頁面,通過該頁面的路由配置,進行展示對應的前端頁面的vue原始檔。
路由模組使用到了第三方的路由庫:vue-router。對於第三方vue-router的配置依賴,可以在package.json檔案中的dependencies配置模組中找到:
...
"dependencies": {
"axios": "^0.18.0",
"better-scroll": "^1.12.6",
"date-fns": "^1.29.0",
"fastclick": "^1.0.6",
"mint-ui": "^2.2.13",
"mockjs": "^1.0.1-beta3",
"swiper": "^4.3.3",
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"vuex": "^3.0.1"
}
...
專案入口
在shop-client專案根目錄下的src目錄中,有兩個代表專案入口的檔案,分別是js檔案和vue檔案。main.js是專案執行的總入口,在main.js檔案內部,引入並使用了App.vue檔案,同時引入了router路由檔案。
App.vue是專案的主頁面的佈局,並引入了頁面樣式檔案。
專案執行
需要執行前端專案進行除錯時,執行以下步驟
/*
cd shop-client
npm run dev
*/
然後在瀏覽器中訪問8080埠: http://localhost:8080 可以訪問到前端頁面,如下圖所示: