第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Web 應(yīng)用程序的 Go Lang 文件夾結(jié)構(gòu)

Web 應(yīng)用程序的 Go Lang 文件夾結(jié)構(gòu)

Go
茅侃侃 2022-01-04 10:28:11
如您所知,Go 是面向 OOP imo 的一種現(xiàn)代方法,具有諸如強(qiáng)制您使用組合而不是繼承之類的絕妙方法。我只是想了解如何根據(jù)文件夾和包結(jié)構(gòu)來設(shè)計(jì)編寫良好的 go 代碼。我只是想知道這種類似 React 的方法是否可以在下面看到 - 將應(yīng)用程序作為組件劃分到不同的包中是否可以工作?或者你能給我一個(gè)例子、鏈接、關(guān)于 web api 的文件夾/打包方面的良好結(jié)構(gòu)的想法。Go 只會(huì)是我的開源項(xiàng)目的后臺(tái) api,在客戶端,我計(jì)劃有一個(gè)單頁 React 應(yīng)用程序順便說一句。非常感謝,
查看完整描述

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)用目錄

文件夾描述
/apiOpenAPI/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)。
/githooksGit 鉤子。
/資產(chǎn)與您的存儲(chǔ)庫一起使用的其他資產(chǎn)(圖像、徽標(biāo)等)。
/網(wǎng)站如果您不使用 GitHub 頁面,這里是放置項(xiàng)目網(wǎng)站數(shù)據(jù)的地方。


查看完整回答
反對(duì) 回復(fù) 2022-01-04
?
森林海

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)目根目錄。


查看完整回答
反對(duì) 回復(fù) 2022-01-04
  • 2 回答
  • 0 關(guān)注
  • 201 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)