Astro adalah framework web modern yang memungkinkan Anda membangun website cepat dengan JavaScript minimal. Dalam tutorial ini, kita akan membuat website statis dari awal.
Mengapa Memilih Astro?
Zero JavaScript by default. Astro merender HTML di server dan hanya mengirimkan JavaScript yang benar-benar dibutuhkan untuk interaktivitas. Ini membuat website sangat ringan dan cepat.
graph TD
A["Request Page"] --> B["Server Renders HTML"]
B --> C{"Interactive?"}
C -- Yes --> D["Hydrate Island"]
C -- No --> E["Pure HTML (Zero JS)"]
style D fill:#d1fae5,stroke:#059669
style E fill:#e0f2fe,stroke:#0284c7 Astro memiliki beberapa keunggulan dibanding framework lain:
- Zero JavaScript by default - Hanya mengirim JavaScript yang benar-benar dibutuhkan
- Island Architecture - Hanya komponen interaktif yang di-hydrate
- Framework Agnostic - Bisa menggunakan React, Vue, Svelte, dll
- Built-in optimizations - Otomatis mengoptimasi gambar, CSS, dan lainnya
Memulai Proyek Baru
Pertama, buat proyek Astro baru dengan perintah berikut:
Ikuti wizard instalasi dan pilih template yang sesuai dengan kebutuhan Anda.
Struktur Proyek

Proyek Astro memiliki struktur yang sederhana dan intuitif:
my-website/
├── public/ # Asset statis (gambar, font, dll)
├── src/
├── components/ # Komponen Astro/React/Vue
├── layouts/ # Layout templates
└── pages/ # Halaman-halaman website
├── astro.config.mjs # Konfigurasi Astro
└── package.json
Membuat Halaman Pertama
Buat file src/pages/index.astro:
---
// Frontmatter - kode JavaScript yang berjalan di build time
const title = "Website Saya";
const features = ["Cepat", "Modern", "SEO-friendly"];
---
<html lang="id">
<head>
<meta charset="UTF-8" />
<title>{title}</title>
</head>
<body>
<h1>{title}</h1>
<ul>
{features.map(feature => <li>{feature}</li>)}
</ul>
</body>
</html>
Komponen dan Layout
Buat layout yang bisa digunakan ulang di berbagai halaman:
---
// src/layouts/BaseLayout.astro
const { title } = Astro.props;
---
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<title>{title}</title>
</head>
<body>
<header>
<nav><!-- Navigation --></nav>
</header>
<main>
<slot />
</main>
<footer>
<p>© 2026 Website Saya</p>
</footer>
</body>
</html>
Content Collections
Untuk konten seperti blog, gunakan Content Collections:
// src/content/config.ts
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
publishedAt: z.date(),
}),
});
export const collections = { blog };
Build dan Deploy
Untuk membuild website:
Output akan berada di folder dist/ yang siap di-deploy ke hosting statis seperti Netlify, Vercel, atau GitHub Pages.
Kesimpulan
Astro adalah pilihan yang sangat baik untuk website yang mengutamakan performa. Dengan arsitektur island dan support untuk berbagai framework, Astro memberikan fleksibilitas tinggi tanpa mengorbankan kecepatan.
Mulai Project Astro Sekarang
Siap membuat website super cepat? Kunjungi dokumentasi resmi dan mulai coding!