divmagic Make design
SimpleNowLiveFunMatterSimple
Neuaufbau einer handcodierten Website mit Astro: Ein moderner Frontend-Workflow-Guide
BlogsAstroNeuaufbau einer handcodierten Website mit Astro: Ein moderner Frontend-Workflow-Guide
Astro

Neuaufbau einer handcodierten Website mit Astro: Ein moderner Frontend-Workflow-Guide

Einleitung

Jahrelang war das manuelle Erstellen einer Website der Goldstandard für Entwickler, die die vollständige Kontrolle über jede Zeile HTML, CSS und JavaScript haben wollten. Es bot unübertroffene Flexibilität und ein tiefes Verständnis der Codebasis. Doch wenn Websites wachsen – mehr Seiten, mehr Inhalte, mehr Komplexität – kann dieser manuelle Ansatz zu einem Wartungsalbtraum werden. Man ertappt sich dabei, Navigationsleisten zu kopieren und einzufügen, Fußzeilen in Dutzenden von Dateien zu aktualisieren und Assets manuell für die Leistung zu optimieren.

Genau in dieser Situation befand sich der Autor des How-To-Geek-Artikels. Seine Website, zuletzt um 2018 neu gestaltet, war von der Unterstützung von sechs oder sieben Büchern auf viele weitere angewachsen. Das manuelle Flicken und Hinzufügen war nicht mehr tragbar. Die Lösung? Die gesamte Website mit Astro neu aufzubauen, einem modernen Static-Site-Generator, der Geschwindigkeit, Einfachheit und eine bessere Entwicklererfahrung verspricht.

In diesem Beitrag werden wir diese Migrationsreise analysieren, die technischen Entscheidungen dahinter untersuchen und Ihnen zeigen, wie Sie dieselben Prinzipien auf Ihre eigenen Projekte anwenden können. Ob Sie einen persönlichen Blog, ein Portfolio oder eine Dokumentationsseite betreiben – die hier gewonnenen Erkenntnisse sind direkt anwendbar.

Enter Astro: The Static Site Generator That Respects Your Code

Astro is a relatively new static site generator that has quickly gained popularity among frontend developers. Its core philosophy is simple: ship zero JavaScript by default, and only load client-side scripts when absolutely necessary. This approach leads to incredibly fast page loads and a smaller carbon footprint.

But what makes Astro particularly appealing for rebuilding a hand-coded website is its component-based architecture. You can create reusable components for headers, footers, cards, and layouts, then compose them into pages. This eliminates the repetitive boilerplate that plagues hand-coded sites.

The Migration Process: Step by Step

Let's walk through the actual steps the author took to rebuild their site with Astro. We'll focus on the technical decisions and code examples that made the transition successful.

Step 1: Setting Up the Astro Project

First, you need to initialize a new Astro project. The official CLI makes this straightforward:

npm create astro@latest my-new-site

During setup, you'll be prompted to choose a template. For a content-heavy site, the "Blog" template is a great starting point. It includes Markdown support, RSS feed generation, and a basic layout.

Once the project is created, you can start customizing the structure. The key folders are:

  • src/pages/, Each file here becomes a route.
  • src/layouts/, Reusable layout components.
  • src/components/, Smaller UI components.
  • public/, Static assets like images and fonts.

Step 2: Extracting the Layout

In a hand-coded site, every page likely contains the same <header>, <nav>, and <footer> markup. With Astro, you create a single layout component that wraps your page content.

---
// src/layouts/BaseLayout.astro
export interface Props {
  title: string;
  description?: string;
}
const { title, description } = Astro.props;
---
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>{title}</title>
  {description && <meta name="description" content={description} />}
  <link rel="stylesheet" href="/styles/global.css" />
</head>
<body>
  <header>
    <nav>
      <a href="/">Home</a>
      <a href="/blog">Blog</a>
      <a href="/about">About</a>
    </nav>
  </header>
  <main>
    <slot /> <!-- Page content goes here -->
  </main>
  <footer>
    <p>&copy; 2025 My Site</p>
  </footer>
</body>
</html>

Now every page can use this layout with just a few lines:

---
import BaseLayout from '../layouts/BaseLayout.astro';
---
<BaseLayout title="About Me" description="Learn more about the author.">
  <h1>About Me</h1>
  <p>I'm a frontend developer who loves Astro.</p>
</BaseLayout>

This single change eliminates hundreds of lines of duplicated HTML across the site.

Step 4: Reusable Components for UI Elements

Beyond layouts, Astro components let you encapsulate any UI pattern. For example, a book card component that displays a cover image, title, and description can be reused across multiple pages.

---
// src/components/BookCard.astro
export interface Props {
  title: string;
  cover: string;
  description: string;
  url: string;
}
const { title, cover, description, url } = Astro.props;
---
<article class="book-card">
  <img src={cover} alt={title} loading="lazy" />
  <h3>{title}</h3>
  <p>{description}</p>
  <a href={url}>Learn More</a>
</article>

<style>
  .book-card {
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 1rem;
    max-width: 300px;
  }
  .book-card img {
    width: 100%;
    height: auto;
    border-radius: 4px;
  }
</style>

Now you can use this component anywhere:

<BookCard
  title="Astro for Beginners"
  cover="/images/astro-book.jpg"
  description="A comprehensive guide to building fast websites with Astro."
  url="/books/astro-for-beginners"
/>

This component-based approach not only saves time but also ensures visual consistency across the site.

Performance Gains: What the Numbers Say

One of the most compelling reasons to migrate to Astro is performance. By shipping zero JavaScript by default, Astro pages load incredibly fast. Let's look at some typical improvements.

Performance Metrics: Hand-Coded vs Astro

SEO and Accessibility Improvements

Rebuilding with Astro also opens the door to better SEO and accessibility practices. Here are some specific improvements you can implement.

Semantic HTML and Structured Data

Astro encourages writing semantic HTML because you're composing components rather than copying and pasting. You can easily add structured data (JSON-LD) to your pages for better search engine understanding.

---
// src/components/SEO.astro
const { title, description, url, image } = Astro.props;
---

  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": title,
  "description": description,
  "url": url,
  "image": image,
})} />

Then include this component in your layout:

<SEO title={title} description={description} url={Astro.url} image="/og-image.jpg" />

Automatic Sitemap Generation

Astro has an official sitemap integration that generates a sitemap.xml file at build time. This is crucial for SEO because it helps search engines discover all your pages.

npm install @astrojs/sitemap

Then add it to your astro.config.mjs:

import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';

export default defineConfig({
  site: 'https://example.com',
  integrations: [sitemap()],
});

That's it. Every page in your src/pages/ directory will be included in the sitemap automatically.

Die Entwicklererfahrung: Warum Astro gewinnt

Neben der Leistung ist die Entwicklererfahrung bei der Arbeit mit Astro ein Hauptgrund für eine Migration. Hier sind einige Aspekte, die der How-To-Geek-Autor wahrscheinlich geschätzt hat.

Hot Module Replacement (HMR)

Wenn Sie lokal entwickeln, bietet der Astro-Entwicklungsserver sofortiges Feedback. Ändern Sie eine Komponente, und der Browser aktualisiert sich ohne vollständiges Neuladen der Seite. Dies ist eine enorme Produktivitätssteigerung im Vergleich zum manuellen Aktualisieren des Browsers nach jeder Bearbeitung.

Integrationsökosystem

Astro verfügt über ein wachsendes Ökosystem von Integrationen für beliebte Tools:

  • Tailwind CSS: Für utility-first Styling.
  • React, Vue, Svelte: Verwenden Sie Komponenten Ihres bevorzugten Frameworks in Astro.
  • MDX: Betten Sie React-Komponenten direkt in Markdown ein.
  • Bildoptimierung: Automatische Größenanpassung und Formatkonvertierung.
  • RSS-Feed: Generieren Sie RSS-Feeds aus Ihren Inhaltssammlungen.

Das bedeutet, dass Sie nicht an ein einzelnes Framework gebunden sind. Sie können das beste Werkzeug für jede Aufgabe verwenden.

TypeScript-Unterstützung

Astro bietet erstklassige TypeScript-Unterstützung. Sie können Props-Schnittstellen für Ihre Komponenten definieren, die Fehler zur Build-Zeit und nicht zur Laufzeit abfangen.

---
interface Props {
  title: string;
  date: Date;
  excerpt: string;
  tags: string[];
}
const { title, date, excerpt, tags } = Astro.props;
---
<article>
  <h2>{title}</h2>
  <time datetime={date.toISOString()}>{date.toLocaleDateString()}</time>
  <p>{excerpt}</p>
  <ul>
    {tags.map(tag => <li>{tag}</li>)}
  </ul>
</article>

Dies fängt Typfehler frühzeitig ab und macht Ihren Code wartbarer.

Häufige Fallstricke und wie man sie vermeidet

Die Migration von einer handcodierten Website zu Astro verläuft im Allgemeinen reibungslos, aber es gibt einige häufige Fallstricke, auf die man achten sollte.

1. Übermäßige Komplexität des Komponentenbaums

Es ist verlockend, für alles eine Komponente zu erstellen, selbst für einen einzelnen Absatz. Das kann jedoch zu unnötiger Komplexität führen. Beginnen Sie mit den sich am häufigsten wiederholenden Elementen (Layout, Navigation, Karten) und erstellen Sie nur dann Komponenten, wenn Sie ein Muster sehen, das sich drei- oder mehrmals wiederholt.

2. Ignorieren des Build-Prozesses

Astro generiert eine statische Website, aber Sie müssen den Build-Prozess dennoch konfigurieren. Stellen Sie sicher, dass Ihre astro.config.mjs die korrekte site-URL für die Sitemap enthält und dass Ihre Bildoptimierungseinstellungen Ihren Anforderungen entsprechen.

3. Nichtverwendung von Content Collections für strukturierte Daten

Wenn Sie eine Liste von Elementen (Bücher, Blogbeiträge, Portfolio-Stücke) haben, verwenden Sie Content Collections. Sie bieten Typsicherheit, automatische Paginierung und einfache Filterung. Das manuelle Auflisten von Elementen in einer Komponente ist ein Rückschritt.

4. Vergessen von 404-Seiten

Handcodierte Websites haben oft eine benutzerdefinierte 404-Seite. In Astro erstellen Sie eine 404.astro-Datei in src/pages/. Sie wird automatisch für jede Route bereitgestellt, die nicht existiert.

---
import BaseLayout from '../layouts/BaseLayout.astro';
---
<BaseLayout title="Page Not Found">
  <h1>404</h1>
  <p>Sorry, the page you're looking for doesn't exist.</p>
  <a href="/">Go back home</a>
</BaseLayout>

Praxisbeispiele: Was der Autor erreicht hat

Der How-To-Geek-Artikel bietet einen offenen Einblick in den Migrationsprozess. Der Autor hat die Website nicht nur neu aufgebaut, sondern auch die Inhaltsstruktur verbessert, neue Funktionen hinzugefügt und für die Leistung optimiert.

Fazit: Ist Astro das Richtige für Ihre handcodierte Website?

Wenn Sie eine handcodierte Website pflegen, die über ein paar Seiten hinausgewachsen ist, ist die Migration zu Astro wahrscheinlich ein kluger Schritt. Die Vorteile sind klar:

  • Schnellere Entwicklung: Wiederverwendbare Komponenten und Markdown-Inhalte reduzieren sich wiederholende Arbeit.
  • Bessere Leistung: Standardmäßig kein JavaScript führt zu blitzschnellen Seiten.
  • Verbessertes SEO: Automatische Sitemaps, strukturierte Daten und optimierte Bilder verbessern die Suchrankings.
  • Einfachere Wartung: Aktualisieren Sie eine Komponente einmal, und sie ändert sich überall.

Der Migrationsprozess selbst ist unkompliziert. Beginnen Sie mit der Einrichtung eines neuen Astro-Projekts, extrahieren Sie Ihr Layout in eine Komponente und konvertieren Sie dann Ihre Seiten in Markdown- oder Astro-Dateien. Verwenden Sie Content Collections für strukturierte Daten und nutzen Sie das Integrationsökosystem für Bilder, SEO und mehr.

Astro ist nicht nur ein Werkzeug, es ist eine Philosophie. Es respektiert die Handwerkskunst handcodierter Websites und bietet gleichzeitig die Automatisierung und Skalierbarkeit, die die moderne Webentwicklung erfordert. Wenn Sie bereit sind, den Kopier-Einfügen-Zyklus hinter sich zu lassen, geben Sie Astro eine Chance.

Beginnen Sie noch heute mit der Erstellung mit DivMagic

Schließen Sie sich über 10.000 Entwicklern, Designern und Geschäftsinhabern an, um Code von jeder Website zu kopieren und ihn in ihren eigenen Projekten zu verwenden.

Get DivMagic for 42% off

Limited time deal for 22:45