
Astro - Mein erster Eindruck

Als Selbständiger hat man nicht die Zeit sich den ganzen Tag um seine Firmen-Webseite zu kümmern - klar, dass es hier ein einfaches, wartungsarmes, schnelles und flexibles System braucht. Doch bietet Astro all das?
Astro ist kein CMS
Vorab gleich zur Klarstellung - Astro ist ein Web Framework und kein CMS. Es gibt keine klassische Oberfläche mit der man mit ein paar Klicks eine Webseite zusammen bastelt. Wer ohne Kenntnisse in der Web-Entwicklung eine Webseite mit Astro bauen möchte wird viel Zeit und Arbeit investieren müssen. Nachdem Zeit als Selbständiger jedoch eine rare Resource ist, sollte man ohne Kenntnisse lieber einen Web-Entwickler oder Agentur beauftragen. Wer mutig genug ist, kann sein Glück auch mit “Vibe Coding” probieren - erfahrungsgemäß wird es aber spätestens einen Web-Entwickler brauchen wenn der “Vibe” nicht mehr passt.
Web Entwickler, speziell mit Kenntnissen in anderen modernen Web Frameworks, werden sich jedoch schnell heimisch fühlen. Ein lauffähiges Projekt kann schnell und einfach auf Basis eines Templates mit pnpm, yarn oder npm generiert werden. Hierbei sei aber angemerkt, dass es zwar viele Themes aus der Community gibt, diese aber bei einer oberflächlichen Durchsicht unterschiedlich aufgesetzt werden. Wer also ein Community-Theme verwenden möchte, sollte die Installationsanweisungen beachten.
Content-driven aber kein CMS?
Astro bezeichnet sich als “Web framework for content-driven Websites” - da erscheint es auf den ersten Blick merkwürdig, dass es kein CMS ist. Astro erlaubt es aber Inhalte aus verschiedensten Quellen zu holen. Sei es ein CMS, eine Datenbank, oder einfache Textdateien in einem Verzeichnis.
Warum dann Astro nutzen, wenn es noch ein CMS braucht? Ein guter Punkt. Sollte die Frage aber nicht eigentlich lauten: Brauche ich wirklich immer ein CMS? Wie viele Teile auf meiner Webseite ändern sich dynamisch? Füge ich tatsächlich so oft neue Inhalte hinzu, dass der Einsatz eines CMS notwendig ist?
Wenn ich beispielsweise meine Webseite betrachte, ist sie großteils statisch. Die Inhalte meiner Seiten ändern sich vielleicht ein, bis zwei Mal im Monat, mein Blog erhält maximal wöchentlich neue Inhalte. Dafür ein CMS warten zu müssen, ist schlichtweg ein Zeitaufwand, der sich für mich nicht lohnt. Daher habe ich mich in der Vergangenheit entschieden, Wordpress, Drupal & Co links liegen zu lassen und stattdessen auf eine statische Webseite zu setzen.
Diese hat natürlich auch wiederkehrende Elemente auf jeder Seite, weshalb es sich lohnt einen Static Site Generator ( SSG) einzusetzen. Und Astro bietet genau diese Funktionalität, erlaubt aber auch zusätzlich dynamische Inhalte nachzuladen. Man kann also ein CMS einbinden - wenn es auch wirklich Sinn macht.
Performance
Astro wirbt stark mit der Performance im Vergleich zu anderen Systemen. Dies hängt aber stark davon ab woher die Inhalte stammen. Statische Inhalte, die direkt ausgeliefert werden können werden logischerweise immer schneller ausgeliefert als dynamische Inhalte, die beispielsweise erst aus einer Datenbank geladen, konvertiert und ausgeliefert werden müssen.
Es ist also, wie bei jedem CMS, Vorsicht angebracht. Astro unterstützt uns hier aber schon mit seiner Architektur: jede Seite und Komponente ist statisch, sofern man nicht explizit definiert, dass sie dynamisch sein soll. Sollen Astro Komponenten auf dem Server dynamisch zusammengefügt werden - wird also Server Side Rendering (SSR) betrieben - muss explizit ein entsprechender Adapter installiert werden, der sich nach der Platform richtet auf der die Webseite dann deployed wird.
Komponenten & Seiten
Die tatsächlichen Seiten auf der Webseite werden recht einfach anhand der Verzeichnisstruktur generiert. Damit wiederkehrende Teile nicht jedes Mal neu geschrieben werden müssen, kann man diese in Komponenten auslagern - die auch Logik beinhalten können. Man sollte nur im Hinterkopf bewahren, dass diese Logik in statischen Komponenten logischerweise zur Zeit der Generierung ausgeführt wird.
Die Syntax ist dabei sehr einfach: Am Anfang definiert man die Logik in Javascript/Typescript und danach wird die Darstellung in HTML mit Javascript Ausdrücken kontrolliert. Für meine Zwecke war das vollkommen ausreichend. Astro bietet aber auch an, andere Frontend-Frameworks wie React oder Vue zu verwenden. Dies werde ich mir noch zu einem anderen Zeitpunkt genauer zu Gemüte führen.
Auf dieselbe Weise lassen sich auch Layouts definieren, wenn zum Beispiel die Landing Page ein anderes Layout als der Blog haben soll. Man kann auch keine Komponenten verwenden und HTML Dateien direkt übernehmen - dies ist insbesondere praktisch, wenn man schon eine statische Webseite hat und diese Schrittweise zu Astro migrieren möchte. Oder wenn man zuerst den Blog mit Astro realisieren möchte, wie es bei mir der Fall war.
Deployment
Da ich Astro als Static Site Generator verwende, ist das Deployment sehr einfach: Ich generiere die Webseite über Astro und synchronisiere die Dateien auf meinem Webserver - fertig. Wer noch keinen Webserver hat, findet in der Astro Dokumentation einige Anleitungen zu vielen Hosting Providern. Manche davon bieten auch eine direkte Integration für Astro an.
Nutzt man Server Side Rendering oder hat anderweitige dynamische Inhalte eingebunden, ist das Deployment naturgemäß komplizierter. Für Server Side Rendering ist ein Adapter notwendig. Der Node Adapter wirkt für mich auf den ersten Blick am flexibelsten, wobei ich mir das zu einem anderen Zeitpunkt genauer anschauen werde.
Fazit
Wer als Selbständiger eine statische Webseite mit Ausbaupotential braucht und die nötigen Kenntnisse in der Web-Entwicklung hat, für den ist Astro sicher eine gute Wahl. Der Wartungsaufwand beschränkt sich auf einen simplen Webserver, eine Datenbank ist nicht notwendig und mit Git kann man leicht auch die Inhalte versionieren. Das Komponentensystem und die Aussicht auch dynamische Inhalte mit unterschiedlichen Frameworks - sofern notwendig - einzubinden bietet mir eine Flexibilität, die ich bei anderen Static Site Generatoren bisher vermisst habe.
Selbständigen Unternehmer:innen mit wenig Zeit, die keine Kenntnisse in der Web-Entwicklung haben, würde ich jedoch dazu raten eine Agentur oder einen Web-Entwickler zu beauftragen.