2016-04-09 14 views
0

あなたが知っているように、GoはOOP imoへの近代的なアプローチです。継承を超えて構成を使用するような華やかなものがあります。私はちょうどよく書かれたgoコードがフォルダとパッケージの構造に関してどのように設計されなければならないかを理解しようとしています。ウェブアプリのGo Langフォルダ構造

私はちょうど、このようなリアクションのようなアプローチが異なるパッケージのコンポーネントとして分割されていることが分かりますか?

また、ウェブAPIのフォルダ/パッケージ化に関する優れた構造の例、リンク、アイデアを教えてください。 Goはクライアント側のオープンソースプロジェクトのバックグラウンドでのAPIにすぎません。私は単一ページのReactアプリケーションをbtwにしようとしています。

どうもありがとう、私のように自分のアプリケーションを構築する傾向がある

enter image description here

答えて

1

:APP1/APP2は、コマンドラインのアプリがある $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.. 。多くの場合、1つのアプリケーション(Webサーバー)に過ぎません。

lib/*は、あなたが持っている機能の分かれた部分だけです。

通常、私はcmd/app1から始まり、プロジェクトが十分に複雑になるとlibに展開します。

静的ファイルサーバー(あなたが持っていると仮定します)を作成し、 "html"をディレクトリとして使用します。

データベースの移行では、私が書いた本当にシンプルな移行プログラムを使用しますが、他のものは複雑すぎる/大きすぎると感じています。

Here's the code私のプロジェクトで使用しています。
私はそれを実際のライブラリにすることを考えましたが、DDLがトランザクション型であると仮定しているので、postgresql固有のものであると確信しています。この構造により

、あなたは、単に(プロジェクトのルートから)行うことができます。

go install ./... && app1

をあなたのアプリケーションをテストする/構築するには。

herokuが作業ルートをプロジェクトルートに設定するため、この構造はHerokuに展開したい場合にも当然機能します。

+0

ありがとう、良い例のように見えます。 – manorie

+0

データベースの移行構造はどのようになっていますか?手動でSQLスクリプトを使用する? – manorie

+0

マイグレーションの方法を説明する記事が更新されました。あなたには十分ではないかもしれません。 –