2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
標(biāo)準(zhǔn) Go 項(xiàng)目布局
GitHub 上有一個(gè)擁有很多星星的 Repo(截至撰寫本文時(shí)為 22k) 這種方法實(shí)際上非常完整,但對(duì)于較小的項(xiàng)目來說可能有點(diǎn)過頭了。
https://github.com/golang-standards/project-layout
Go 目錄(基礎(chǔ))
文件夾 | 描述 |
---|---|
/cmd | 本項(xiàng)目的主要應(yīng)用。 |
/內(nèi)部的 | 私有應(yīng)用程序和庫代碼。 |
/包 | 外部應(yīng)用程序可以使用的庫代碼。 |
/小販 | 應(yīng)用程序依賴項(xiàng)(手動(dòng)管理或由您最喜歡的依賴項(xiàng)管理工具管理,例如新的內(nèi)置 Go Modules 功能)。 |
服務(wù)應(yīng)用目錄
文件夾 | 描述 |
---|---|
/api | OpenAPI/Swagger 規(guī)范、JSON 模式文件、協(xié)議定義文件。 |
Web 應(yīng)用程序目錄
文件夾 | 描述 |
---|---|
/網(wǎng)絡(luò) | Web 應(yīng)用程序特定組件:靜態(tài) Web 資產(chǎn)、服務(wù)器端模板和 SPA。 |
通用應(yīng)用程序目錄
文件夾 | 描述 |
---|---|
/配置 | 配置文件模板或默認(rèn)配置。 |
/在里面 | 系統(tǒng)初始化(systemd、upstart、sysv)和進(jìn)程管理器/主管(runit、supervisord)配置。 |
/腳本 | 執(zhí)行各種構(gòu)建、安裝、分析等操作的腳本。 |
/建造 | 打包和持續(xù)集成。 |
/部署 | IaaS、PaaS、系統(tǒng)和容器編排部署配置和模板。 |
/測試 | 其他外部測試應(yīng)用程序和測試數(shù)據(jù)。 |
其他目錄
文件夾 | 描述 |
---|---|
/文檔 | 設(shè)計(jì)和用戶文檔(除了你的 godoc 生成的文檔)。 |
/工具 | 本項(xiàng)目的支持工具。 |
/例子 | 您的應(yīng)用程序和/或公共圖書館的示例。 |
/第三者 | 外部幫助工具、分叉代碼和其他 3rd 方實(shí)用程序(例如 Swagger UI)。 |
/githooks | Git 鉤子。 |
/資產(chǎn) | 與您的存儲(chǔ)庫一起使用的其他資產(chǎn)(圖像、徽標(biāo)等)。 |
/網(wǎng)站 | 如果您不使用 GitHub 頁面,這里是放置項(xiàng)目網(wǎng)站數(shù)據(jù)的地方。 |

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
我傾向于將我的應(yīng)用程序構(gòu)建為:
$GOPATH/github.com/yourname/projectname/
cmd/
app1/
main.go
app2/
main.go
db/
001_initial_schema.sql
002_add_timestamps.sql
... etc ...
lib/
lib1/
lib2/
html/
..all the html stuff..
其中 app1/app2 是命令行應(yīng)用程序。通常它只是一個(gè)應(yīng)用程序(您的網(wǎng)絡(luò)服務(wù)器)。
lib/* 就是您擁有的任何隔離功能。
通常,我從 cmd/app1 開始,然后在項(xiàng)目變得足夠復(fù)雜時(shí)擴(kuò)展到 lib。
并制作您的靜態(tài)文件服務(wù)器(假設(shè)您有一個(gè)),使用“html”作為目錄。
對(duì)于數(shù)據(jù)庫遷移,我使用了一個(gè)非常簡單的遷移器,因?yàn)槲野l(fā)現(xiàn)其他遷移器太復(fù)雜/太大了。
這是我在項(xiàng)目中使用的代碼。
我想把它變成一個(gè)真正的庫,但我很確定這是 postgresql 特定的,因?yàn)樗僭O(shè) DDL 是事務(wù)性的。
使用此結(jié)構(gòu),您可以簡單地(從項(xiàng)目根目錄)執(zhí)行以下操作:
go install ./... && app1
構(gòu)建/測試您的應(yīng)用程序。
如果您隨后想要部署到 Heroku,這種結(jié)構(gòu)也自然會(huì)起作用,因?yàn)?heroku 將您的工作目錄設(shè)置為您的項(xiàng)目根目錄。
- 2 回答
- 0 關(guān)注
- 201 瀏覽
添加回答
舉報(bào)