Go 項目規(guī)劃

2022-05-13 16:56 更新

做任何事情都需要做好規(guī)劃,那么我們在開發(fā)博客系統(tǒng)之前,同樣需要做好項目的規(guī)劃,如何設(shè)置目錄結(jié)構(gòu),如何理解整個項目的流程圖,當(dāng)我們理解了應(yīng)用的執(zhí)行過程,那么接下來的設(shè)計編碼就會變得相對容易了

gopath以及項目設(shè)置

假設(shè)指定gopath是文件系統(tǒng)的普通目錄名,當(dāng)然我們可以隨便設(shè)置一個目錄名,然后將其路徑存入GOPATH。前面介紹過GOPATH可以是多個目錄:在window系統(tǒng)設(shè)置環(huán)境變量;在linux/MacOS系統(tǒng)只要輸入終端命令export gopath=/home/astaxie/gopath,但是必須保證gopath這個代碼目錄下面有三個目錄pkg、bin、src。新建項目的源碼放在src目錄下面,現(xiàn)在暫定我們的博客目錄叫做beeblog,下面是在window下的環(huán)境變量和目錄結(jié)構(gòu)的截圖:



應(yīng)用程序流程圖

博客系統(tǒng)是基于模型-視圖-控制器這一設(shè)計模式的。MVC是一種將應(yīng)用程序的邏輯層和表現(xiàn)層進(jìn)行分離的結(jié)構(gòu)方式。在實踐中,由于表現(xiàn)層從Go中分離了出來,所以它允許你的網(wǎng)頁中只包含很少的腳本。

  • 模型 (Model) 代表數(shù)據(jù)結(jié)構(gòu)。通常來說,模型類將包含取出、插入、更新數(shù)據(jù)庫資料等這些功能。
  • 視圖 (View) 是展示給用戶的信息的結(jié)構(gòu)及樣式。一個視圖通常是一個網(wǎng)頁,但是在Go中,一個視圖也可以是一個頁面片段,如頁頭、頁尾。它還可以是一個 RSS 頁面,或其它類型的“頁面”,Go實現(xiàn)的template包已經(jīng)很好的實現(xiàn)了View層中的部分功能。
  • 控制器 (Controller) 是模型、視圖以及其他任何處理HTTP請求所必須的資源之間的中介,并生成網(wǎng)頁。

下圖顯示了項目設(shè)計中框架的數(shù)據(jù)流是如何貫穿整個系統(tǒng):


  1. main.go作為應(yīng)用入口,初始化一些運行博客所需要的基本資源,配置信息,監(jiān)聽端口。
  2. 路由功能檢查HTTP請求,根據(jù)URL以及method來確定誰(控制層)來處理請求的轉(zhuǎn)發(fā)資源。
  3. 如果緩存文件存在,它將繞過通常的流程執(zhí)行,被直接發(fā)送給瀏覽器。
  4. 安全檢測:應(yīng)用程序控制器調(diào)用之前,HTTP請求和任一用戶提交的數(shù)據(jù)將被過濾。
  5. 控制器裝載模型、核心庫、輔助函數(shù),以及任何處理特定請求所需的其它資源,控制器主要負(fù)責(zé)處理業(yè)務(wù)邏輯。
  6. 輸出視圖層中渲染好的即將發(fā)送到Web瀏覽器中的內(nèi)容。如果開啟緩存,視圖首先被緩存,將用于以后的常規(guī)請求。

目錄結(jié)構(gòu)

根據(jù)上面的應(yīng)用程序流程設(shè)計,博客的目錄結(jié)構(gòu)設(shè)計如下:

|——main.go         入口文件
|——conf            配置文件和處理模塊
|——controllers     控制器入口
|——models          數(shù)據(jù)庫處理模塊
|——utils           輔助函數(shù)庫
|——static          靜態(tài)文件目錄
|——views           視圖庫

框架設(shè)計

為了實現(xiàn)博客的快速搭建,打算基于上面的流程設(shè)計開發(fā)一個最小化的框架,框架包括路由功能、支持REST的控制器、自動化的模板渲染,日志系統(tǒng)、配置管理等。

總結(jié)

本小節(jié)介紹了博客系統(tǒng)從設(shè)置GOPATH到目錄建立這樣的基礎(chǔ)信息,也簡單介紹了框架結(jié)構(gòu)采用的MVC模式,博客系統(tǒng)中數(shù)據(jù)流的執(zhí)行流程,最后通過這些流程設(shè)計了博客系統(tǒng)的目錄結(jié)構(gòu),至此,我們基本完成一個框架的搭建,接下來的幾個小節(jié)我們將會逐個實現(xiàn)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號