2016-04-09 16 views
0

Wie Sie wissen, Go ist ein moderner Ansatz zu OOP Imo, mit brillanten Dingen wie zwingen Sie, die Komposition über Vererbung zu verwenden. Ich versuche nur zu verstehen, wie ein gut geschriebener Go-Code in Bezug auf die Ordner- und Paketstruktur gestaltet werden muss.Go Lang Ordnerstruktur für eine Web App

Ich frage mich nur, ob dieser React-ähnliche Ansatz, der unten zu sehen ist - App als Komponenten zu verschiedenen Paketen teilen kann funktionieren?

Oder können Sie mir ein Beispiel, Link, Idee für eine gute Struktur in Bezug auf Ordner/Verpackung einer Web-API geben. Go wird nur eine API im Hintergrund zu meinem Open-Source-Projekt sein, auf der Clientseite plane ich eine einseitige React App zu haben.

Vielen Dank,

enter image description here

Antwort

1

Ich neige dazu, meine apps wie zu strukturieren: $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.. wo app1/app2 die Apps Befehlszeile sind. Oft ist es nur eine App (Ihr Webserver).

lib/* ist genau das, was Sie an unterschiedlichen Funktionen haben.

Normalerweise beginne ich mit nur cmd/app1 und erweitern dann in lib, wenn das Projekt ausreichend komplex wird.

Und machen Sie Ihren statischen Dateiserver (vorausgesetzt, Sie haben einen), verwenden Sie "html" als Verzeichnis.

Für Datenbankmigrationen verwende ich einen wirklich einfachen Migrator, den ich geschrieben habe, da ich finde, dass die anderen zu kompliziert/zu groß sind.

Here's the code Ich verwende in meinen Projekten.
Ich dachte daran, es zu einer echten Bibliothek zu machen, aber ich bin mir ziemlich sicher, dass dies postgresqlspezifisch ist, da davon ausgegangen wird, dass DDL transaktional ist.

Mit dieser Struktur können Sie einfach tun (aus dem Projekt root):

go install ./... && app1

Um Ihre App zu bauen/testen.

Diese Struktur funktioniert natürlich auch, wenn Sie sie dann auf Heroku bereitstellen möchten, da sie Ihr Arbeitsverzeichnis auf Ihr Projekt root setzt.

+0

Vielen Dank sieht wie ein gutes Beispiel aus. – manorie

+0

Wie strukturieren Sie Datenbankmigrationen? Manuell mit einem SQL-Skript? – manorie

+0

aktualisierter Artikel, um zu erklären, wie ich Migrationen mache. Kann nicht genug für Sie sein –