Go Single Page Web Applikationen
Go hat keine so ausgefeilten Frameworks, wie sie Java-Entwickler von Spring oder JEE gewöhnt sind. Dafür gibt es einige andere spezielle Eigenschaften:
- Go bringt in seiner Standardbibliothek bereits viele wesentliche Elemente für eine Web Applikation mit: HTTP(S)-Server, File-Server, eine Template-Engine für HTML-Templates und vieles mehr.
- Es wird kein extra Server wie Tomcat, Jetty oder ein JEE Container benötigt, die entstehende ausführbare Datei ist der Webserver.
- Dadurch werden die Applikationen sehr kompakt und können performant auch auf kleinen Systemen eingesetzt werden.
- Es gibt im Internet viele relativ kleine, gut dokumentierte Bausteine, mit denen sich die einzelnen notwendigen Komponenten einer vollständigen Web Applikation zusammenbauen lassen.
- Die Einarbeitung in die einzelnen Komponenten ist in der Regel einfacher, als sich in einem sehr komplexen Framework wie Spring oder JEE zurechtzufinden.
- Eigene Fehler lassen sich leichter identifizieren und in Dokumentation und ggf. Code der beteiligten Komponente nachvollziehen.
- Manche Leistungen, die man von anderen Frameworks gewohnt ist, sind nur teilweise vorhanden.
Für dieses Tutorial ergibt sich der Vorteil, dass die einzelnen wichtigen Bestandteile von Web Applikationen sehr viel sichtbarer werden.
Damit eine responsive Single Page Applikation entsteht, wird in diesem Tutorial auch Bootstrap, jQuery und JavaScript verwendet. Zu diesen Themen gibt es zahlreiche online Tutorials, daher ist hier der Schwerpunkt die Einbettung in Go.
Voraussetzungen
Grundlegende Kenntnisse von Go werden vorausgesetzt. Dafür gibt es viele Tutorials und Bücher im Internet, z.B.:
- A Tour of Go auf der Go Projektseite
- An Introduction to Programming in Go gibt es auch in anderen Sprachen, z.B. Введение в программирование на Go
- Programmierung in Google Go als freies Google Book online (deutsch)
- The little Go Book
- Eine Sammlung von Go Büchern im Internet
Themen
Die folgenden Themen werden behandelt:
- Routing von Web Requests mit Gorilla Mux
- Session Management mit Gorilla Sessions
- Request Filter mit justinas alice
- ToDo: CSRF Schutz mit justinas nosurf
- Go Persistenz mit GORM (The fantastic ORM library for Golang)
- ToDo: Konfiguration mit viper
- Verwendung von Go Templates
- Bootstrap und jQuery
- Parametrisierung von Templates
Beispiel-Applikation
Alle Themen werden an dem relativ umfangreichen Beispiel gostip behandelt, das für den realen Einsatz entwickelt wird. Als Entwicklungsumgebung wird IntelliJ IDEA Community Edition verwendet.