Astro ile Kişisel Blog Kurmak

1 min read | GitHub'da Düzenle

Table of contents

Open Table of contents

Astro Neden?

Astro’nun diğer frameworklerden farkı Islands Architecture adını verdiği yaklaşım. Sayfanızdaki her bileşen varsayılan olarak statik HTML’e derlenir. JavaScript sadece ihtiyaç duyulan interaktif bileşenler için yüklenir.

Bu da şu anlama geliyor: daha az JavaScript = daha hızlı site.

# Lighthouse Score karşılaştırması (yaklaşık)
Next.js Blog:  Performance 75-85
Astro Blog:    Performance 95-100

Kurulum

Yeni bir Astro projesi başlatmak çok basit:

npm create astro@latest my-blog
cd my-blog
npm install
npm run dev

Kurulum sihirbazı size tema seçeneği sunar. Blog için blog şablonunu seçebilirsiniz veya sıfırdan başlayabilirsiniz.

Content Collections

Astro’nun en güçlü özelliklerinden biri Content Collections. Blog yazılarınız için tip güvenliği sağlıyor:

// src/content/config.ts
import { defineCollection, z } from "astro:content";

const blog = defineCollection({
  type: "content",
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()).default([]),
    draft: z.boolean().default(false),
  }),
});

export const collections = { blog };

Artık getCollection("blog") çağırdığınızda tüm yazılarınız tam olarak tiplenmiş gelir.

MDX Desteği

MDX ile Markdown içinde React componentleri kullanabilirsiniz:

import MyChart from "@/components/MyChart";

## Veriler

İşte geçen ayki trafik verileri:

<MyChart data={[10, 20, 15, 30]} />

Görüldüğü gibi Nisan'da ciddi bir artış var.

Deployment

Vercel’e deploy etmek için vercel.json dosyası oluşturup framework’ü belirtmeniz yeterli:

{
  "framework": "astro",
  "buildCommand": "npm run build",
  "outputDirectory": "dist"
}

Sonuç

Astro, kişisel blog için ideal bir seçim. Hızlı, esnek ve geliştirmesi keyifli. TypeScript desteği, MDX entegrasyonu ve mükemmel performansıyla birkaç saatte tam işlevli bir blog kurmak mümkün.

Projenin kaynak koduna GitHub’dan ulaşabilirsiniz.

Bu yazıyı paylaş: