Static Site Generators unter Windows

Spätestens durch GitHub hat Static-Site Generation für die breite Masse an Bekanntheit gewonnen. Das Prinzip ist relativ einfach: statt auf einem Server die Seite von PHP oder ASP.NET “zusammenrechnen” zu lassen, macht man es auf dem Entwicklerrechner und spielt die einzelnen HTML Dateien anschließend auf dem Server. Die Vorteile die ich dadurch sehe:

  • Der Webserver kann sehr einfach sein. Dadurch verringert sich die Komplexität in Wartung und Sicherheit.
  • Migration auf andere Server sehr einfach.
  • Sehr hohe Performance, da der Webserver nur mehr die HTML Seite ausliefern muss.
  • Gut versionierbar. Einträge (wie hier in meinem Blog) können e.g. in Markdown geschrieben werden. Die Sprache ist textbasiert – daher hat man sehr gut leserliche “diffs” und weiß was geändert wurde. Git bietet sich e.g. gut an.
  • Wenig Kopfweh. Man muss sich nicht mit Full-Blown Tools wie Wordpress und Co herumschlagen, wenn man die Features gar nicht braucht. Right Tool for Right Job.

Die Nachteile sind natürlich auch abzuwiegen:

  • Bei Kommentaren etc. muss man sich auf externe Dienste verlassen (e.g. Disqus).
  • Die Seite ist statisch. Alles was nicht auf der Entwickler-Maschine berechnet werden kann, kann nur mit Javascript auf dem Client dynamisch gemacht werden. Alternativ gibt es natürlich Edge Side Includes, dass auch gewisse Probleme lösen kann: hier können durch einen Reverse-Proxy Teilbereiche der Seite dynamisch gemacht werden.

Für Windows habe ich HUGO IO gefunden. Das Tool ist sehr straight forward – ich hatte noch nie ein Problem damit. Wie funktioniert das Ganze jetzt? E.g. die Tagcloud schaut wie folgt aus:

{{ range .Params.tags }}					
	<a href="{{ $baseurl }}tags/{{ . | urlize }}" class="btn btn-default btn-xs" role="button"><small><span class="glyphicon glyphicon-tag" aria-hidden="true"></span> {{ . }}</small></a>				
{{ end }}

Das Ganze sieht modernen Template Sprachen sehr ähnlich – einziger Unterschied: es wird lokal auf einer Entwicklermaschine interpretiert. Auch kann man Sub-Seiten inkludieren:

{{ partial "footer.html" . }}

Es gibt auch andere Extras noch bei Hugo. Wer also die Features eines WordPress nicht braucht, sollte sich auf jeden Fall Static-Site Generators anschauen. Eine Alternative noch: https://github.com/jekyll/jekyll Hat mehr Features und eine größere Community als HUGO, allerdings ist es auch weit komplexer. HUGO ist eine einfache exe-Datei.