cat blog/.md
Tại sao mình chọn Astro cho blog cá nhân
Khi quyết định xây blog, câu hỏi đầu tiên luôn là: dùng công cụ gì? Có quá nhiều lựa chọn ngoài kia — Next.js, Hugo, Gatsby, Jekyll… Cuối cùng mình chọn Astro. Đây là lý do.
Các tiêu chí của mình
- Nhanh — Blog cần load gần như tức thì
- Viết bằng Markdown — Đơn giản, portable, không lock-in
- Developer Experience tốt — Setup nhanh, hot reload mượt
- Ít JavaScript — Blog không cần SPA
Tại sao không chọn Next.js?
Next.js rất mạnh, nhưng nó overkill cho một blog tĩnh. Mình không cần SSR, API routes, hay React hydration cho một trang hiển thị text. Kết quả là bundle size lớn không cần thiết.
Tại sao không chọn Hugo?
Hugo build cực nhanh, nhưng template engine của nó (Go templates) khá khó chịu khi cần customize nhiều. Mình muốn dùng component-based approach.
Astro — Điểm cân bằng hoàn hảo
Astro nổi bật ở chỗ:
Zero JavaScript by default
---
// Server-side code chạy lúc build
const posts = await getCollection('blog');
---
<!-- HTML thuần, không có JS nào được ship cho client -->
<ul>
{posts.map(post => <li>{post.data.title}</li>)}
</ul>
Chỉ khi nào bạn chủ động thêm client-side interactivity, JS mới được gửi đến browser.
Content Collections
Astro có hệ thống Content Collections tuyệt vời — type-safe, validation với Zod, và hỗ trợ Markdown/MDX out of the box.
Island Architecture
Khi cần interactive component, Astro dùng Islands Architecture — chỉ hydrate những phần cần thiết, không phải cả trang.
Tích hợp tốt
- Tailwind CSS — một dòng config
- MDX — khi cần component trong Markdown
- RSS — plugin sẵn có
- Sitemap — tự động generate
Kết luận
Nếu bạn đang tìm một framework cho blog hoặc website content-focused, Astro là lựa chọn tuyệt vời. Nhanh, đơn giản, và developer experience xuất sắc.
“The best tool is the one that gets out of your way.”
Với Astro, mình tập trung vào viết, không phải config.