Devrim Mehmet Logo

Astro: Modern Web Geliştirme için Yeni Nesil Framework

4 dk okuma
Astro: Modern Web Geliştirme için Yeni Nesil Framework

Astro, modern web geliştirme dünyasında performans ve geliştirici deneyimini ön plana çıkaran yeni nesil bir framework'tür. İçerik odaklı web siteleri (bloglar, portfolyolar, dokümantasyon siteleri) için optimize edilmiş olan Astro, zero JavaScript by default yaklaşımıyla dikkat çeker.

Astro'nun Temel Felsefesi

Astro'nun arkasındaki temel fikir basittir: Kullanıcıya mümkün olduğunca az JavaScript gönderin. Geleneksel SPA (Single Page Application) framework'lerinin aksine, Astro varsayılan olarak hiç JavaScript göndermez. JavaScript sadece gerçekten ihtiyaç duyulduğunda ve sadece gerekli bileşenler için yüklenir.

Islands Architecture

Astro'nun en önemli özelliklerinden biri Islands Architecture yaklaşımıdır. Bu mimari, sayfanın çoğunun statik HTML olarak render edilmesini, sadece interaktif bileşenlerin JavaScript ile çalışmasını sağlar.


---
// Statik içerik - JavaScript yok
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
// İnteraktif bileşen - Sadece bu bileşen için JavaScript yüklenir
import Counter from '../components/Counter.vue';
---
<html>
<body>
<Header />
<main>
<h1>Merhaba Dünya</h1>
<p>Bu statik içerik, hiç JavaScript gerektirmez.</p>
<!-- Sadece bu bileşen için JavaScript yüklenir -->
<Counter client:load />
</main>
<Footer />
</body>
</html>

Astro'nun Güçlü Yönleri

1. Framework Agnostic (Çerçeve Bağımsız)

Astro, birden fazla framework'ü aynı projede kullanmanıza izin verir:


---
import ReactComponent from './ReactComponent.jsx';
import VueComponent from './VueComponent.vue';
import SvelteComponent from './SvelteComponent.svelte';
---
<div>
<ReactComponent client:visible />
<VueComponent client:idle />
<SvelteComponent client:media="(max-width: 768px)" />
</div>

2. Performans Odaklı

  • Zero JavaScript by Default
  • Partial Hydration
  • Automatic Image Optimization
  • Built-in Asset Optimization

3. SEO Dostu

Astro, server-side rendering (SSR) ve static site generation (SSG) desteği ile güçlü SEO performansı sunar.


---
import { SEO } from 'astro-seo';
const title = 'Astro ile Modern Web Geliştirme';
const description = 'Performans odaklı web siteleri için Astro kullanımı';
---
<SEO
title={title}
description={description}
openGraph={{
basic: {
title: title,
type: 'website',
image: '/og-image.jpg',
},
}}
twitter={{
creator: '@DevrimMehmetp',
}}
/>

Pratik Kullanım Senaryoları

Content Collections ile Tip Güvenli İçerik Yönetimi


// src/content/config.ts
import { defineCollection, z } from 'astro:content';
const blogCollection = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.date(),
author: z.string(),
tags: z.array(z.string()).optional(),
heroImage: z.string().optional(),
}),
});
export const collections = {
blog: blogCollection,
};

Dinamik Routing


---
// src/pages/blog/[slug].astro
import { getCollection } from 'astro:content';
export async function getStaticPaths() {
const blogPosts = await getCollection('blog');
return blogPosts.map((post) => ({
params: { slug: post.slug },
props: { post },
}));
}
const { post } = Astro.props;
const { Content } = await post.render();
---
<article>
<h1>{post.data.title}</h1>
<time>{post.data.pubDate}</time>
<Content />
</article>

Deployment ve Production

Coolify ile Deployment


FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Build Optimizasyonu


import { defineConfig } from 'astro/config';
export default defineConfig({
output: 'static',
build: {
inlineStylesheets: 'auto',
},
vite: {
build: {
cssMinify: true,
minify: 'terser',
},
},
});

Astro vs Diğer Framework'ler

Özellik Astro Next.js Gatsby
Default JS 0 KB ~80 KB ~50 KB
Hydration Partial Full Full
Framework Support Multi React React
Learning Curve Düşük Orta Orta
Build Speed Çok Hızlı Hızlı Yavaş

Sonuç

Astro, özellikle içerik odaklı web siteleri için güçlü bir seçimdir. Performans, SEO ve geliştirici deneyimi açısından modern web geliştirme standartlarını yeniden tanımlamaktadır.

Astro'nun tercih edilmesi gereken durumlar

  • Blog ve portfolyo siteleri
  • Dokümantasyon siteleri
  • Marketing ve landing page'ler
  • E-ticaret vitrin sayfaları
  • Kurumsal web siteleri

Astro'nun uygun olmadığı durumlar

  • Yoğun interaktif uygulamalar (dashboard, admin panel)
  • Real-time uygulamalar
  • Karmaşık state yönetimi gerektiren SPA uygulamaları

Modern web geliştirme yaklaşımlarını benimseyen, performans odaklı ve SEO dostu projeler için Astro, 2024 ve sonrası için güçlü bir adaydır.