做任何事情都需要做好規(guī)劃,那么我們?cè)陂_(kāi)發(fā)博客系統(tǒng)之前,同樣需要做好項(xiàng)目的規(guī)劃,如何設(shè)置目錄結(jié)構(gòu),如何理解整個(gè)項(xiàng)目的流程圖,當(dāng)我們理解了應(yīng)用的執(zhí)行過(guò)程,那么接下來(lái)的設(shè)計(jì)編碼就會(huì)變得相對(duì)容易了
假設(shè)指定gopath是文件系統(tǒng)的普通目錄名,當(dāng)然我們可以隨便設(shè)置一個(gè)目錄名,然后將其路徑存入GOPATH。前面介紹過(guò)GOPATH可以是多個(gè)目錄:在window系統(tǒng)設(shè)置環(huán)境變量;在linux/MacOS系統(tǒng)只要輸入終端命令export gopath=/home/astaxie/gopath,但是必須保證gopath這個(gè)代碼目錄下面有三個(gè)目錄pkg、bin、src。新建項(xiàng)目的源碼放在src目錄下面,現(xiàn)在暫定我們的博客目錄叫做beeblog,下面是在window下的環(huán)境變量和目錄結(jié)構(gòu)的截圖:
http://wiki.jikexueyuan.com/project/go-web-programming/images/13.1.gopath.png" alt="" />
圖13.1 環(huán)境變量GOPATH設(shè)置
http://wiki.jikexueyuan.com/project/go-web-programming/images/13.1.gopath2.png" alt="" />
圖13.2 工作目錄在$gopath/src下
博客系統(tǒng)是基于模型-視圖-控制器這一設(shè)計(jì)模式的。MVC是一種將應(yīng)用程序的邏輯層和表現(xiàn)層進(jìn)行分離的結(jié)構(gòu)方式。在實(shí)踐中,由于表現(xiàn)層從Go中分離了出來(lái),所以它允許你的網(wǎng)頁(yè)中只包含很少的腳本。
下圖顯示了項(xiàng)目設(shè)計(jì)中框架的數(shù)據(jù)流是如何貫穿整個(gè)系統(tǒng):
http://wiki.jikexueyuan.com/project/go-web-programming/images/13.1.flow.png" alt="" />
圖13.3 框架的數(shù)據(jù)流
根據(jù)上面的應(yīng)用程序流程設(shè)計(jì),博客的目錄結(jié)構(gòu)設(shè)計(jì)如下:
|——main.go 入口文件
|——conf 配置文件和處理模塊
|——controllers 控制器入口
|——models 數(shù)據(jù)庫(kù)處理模塊
|——utils 輔助函數(shù)庫(kù)
|——static 靜態(tài)文件目錄
|——views 視圖庫(kù)
為了實(shí)現(xiàn)博客的快速搭建,打算基于上面的流程設(shè)計(jì)開(kāi)發(fā)一個(gè)最小化的框架,框架包括路由功能、支持REST的控制器、自動(dòng)化的模板渲染,日志系統(tǒng)、配置管理等。
本小節(jié)介紹了博客系統(tǒng)從設(shè)置GOPATH到目錄建立這樣的基礎(chǔ)信息,也簡(jiǎn)單介紹了框架結(jié)構(gòu)采用的MVC模式,博客系統(tǒng)中數(shù)據(jù)流的執(zhí)行流程,最后通過(guò)這些流程設(shè)計(jì)了博客系統(tǒng)的目錄結(jié)構(gòu),至此,我們基本完成一個(gè)框架的搭建,接下來(lái)的幾個(gè)小節(jié)我們將會(huì)逐個(gè)實(shí)現(xiàn)。