Astro
Hintergrundbild © Ibrahim Shabil
Jetzt habe ich den Sprung doch mal gemacht… dieses Weblog wird jetzt statisch generiert mit Astro. Nachdem ich bisher immer auf selbst gebaute Blog-Engines mit PHP (hey, it works! Hat seinen ganz eigenen Reiz) gesetzt habe, wollte ich mal was neues ausprobieren. Und da sich in der Internetszene schon seit längerem einen Trend in Richtung JavaScript ausbreitet, kann es auch gleich so ein Framework sein. Erstaunlich lange habe ich den Versprechungen von Gatsby, Next.js oder Nuxt wiederstanden. Nur um jetzt doch einzuknicken… aber manchmal muss man einfach bereit sein alte Zöpfe auch mal abzuschneiden.
Astro
“Astro is the all-in-one web framework designed for speed. Pull your content from anywhere and deploy everywhere, all powered by your favorite UI components and libraries.”
Der Ansatz standardmäßig kein JavaScript an den Nutzer auszuliefern gefällt mir schonmal sehr gut. Astro dient dabei gewissermaßen als Metaframework und SSG, dass sinnvolle Standards setzt und ansonsten aber dem Webentwickler überlässt welche anderen Frameworks eingesetzt werden. Das Ergebnis kann nach dem obligatorischen Build Prozess per npm run build
eine einfache, statischen Webseiten sein (die aber intern aus Kompoenten bestehen können). Oder man integriert React- oder Vue-Apps, um Teile des Webseite dynamisch zu gestalten.
Vorteile
- Sinnvolle Basis
- Statisches Routing per Datei- und Ordnernamen
- Native Einbinding von Markdown-Inhalten
- MDX Inhalte mit dynamischen Komponenten
- Die Performance ist durch die statisch generierten HTML-Inhalte natürlich fantastisch. Hierdurch ermöglicht Astro schnelles Laden und verbesserte Leistung, da die Seiten bereits vorab gerendert wurden
- Astro ermöglicht die Verwendung verschiedener Komponenten und Frameworks, sodass Entwickler ihre bevorzugten Tools und Technologien verwenden können
Nachteile
- Abhängigkeit vom JavaScript-Ökosystem (node, npm) mit bisher ungelösten Herausforderungen was Sicherheitslücken und Paketverwaltung betrifft
- Kein Deployment auf normale Webserver vorgesehen? Ist natürlich quatsch, aber in der Dokumentation wird nur auf neue Methoden wie Netify oder Vercel verwiesen. Das finde ich schade, weil junge Entwickler so den Eindruck erhalten es gehe gar nicht anders. Dabei können die Inhalte wirklich durch ein simples Kopieren per SFTP oder rsync auf wirklich jeden Webserver deployed werden. Ein Hinweis in der offiziellen Dokumentation auf einen Befehl wie
npm run build && rsync -avz -e "ssh" --delete ./dist/ user@server.tld:/var/www/path/to/public/folder/
würde mir schon reichen 😎 - Für Entwickler, die noch nicht mit Astro bzw. JavaScript-basierten Frameworks (React, React Native…) vertraut sind, kann es eine gewisse Einarbeitungszeit erfordern, um die Konzepte und Best Practices zu verstehen
- Astro ist möglicherweise nicht für alle Arten von Websites oder Projekten geeignet, insbesondere wenn dynamische Inhalte oder serverseitige Funktionen erforderlich sind
- Als langjähriger Entwickler hat man das Gefühl das Rad nochmal unnötig neu zu erfinden – das ist aber unvermeidlich wenn man sich von den bekannten Pfaden entfernt. Da braucht es oft neue Lösungen für die vor 10 Jahren schonmal gelösten Probleme
- Das dynamische Einbinden von Bildern/Assets, die nicht teil des Builds sind, scheint kaum möglich oder jedenfalls sehr umständlich zu sein
- Das Generieren und Kompilieren der statischen Seiten kann je nach Größe des Projekts und der Anzahl der verwendeten Komponenten recht lange dauern
Fazit
Erstmal vorsichtig positiv. Für einfache Anwendungen oder Informations- und Produktseiten, die keiner ständige redaktionellen Änderung bedürfen ideal. Für alle anderen Fälle wäre ein richtiges Redaktionssystem aber sicher die bessere Wahl.