Obiz Solutions

Astro là gì?

Astro là một web framework để xây các site thiên về nội dung (blog, docs, site marketing, portfolio…). Chính website Obiz Solutions này cũng được xây bằng Astro. Điểm khác biệt lớn nhất của Astro so với các framework SPA (React, Vue, Next.js…) là mặc định không gửi JavaScript nào xuống trình duyệt — trang render sẵn thành HTML tĩnh, tải cực nhanh.

Kiến trúc Islands

Astro dùng mô hình gọi là Islands Architecture: toàn trang là HTML/CSS tĩnh, chỉ những phần thật sự cần tương tác (một widget, một form…) mới được “hydrate” thành component JS — như những hòn đảo nhỏ nổi trên biển HTML tĩnh. Nhờ vậy site vừa có thể dùng React/Vue/Svelte khi cần, vừa không phải trả giá bằng cả một bundle JS khổng lồ cho những trang không cần tương tác gì.

File-based routing

Mỗi file trong src/pages/ tự động trở thành một route:

src/pages/index.astro       →  /
src/pages/blog/index.astro  →  /blog/
src/pages/blog/[slug].astro →  /blog/:slug/

Component .astro

Astro có cú pháp component riêng (.astro), gồm 2 phần: một block “frontmatter” chạy lúc build (fetch data, xử lý logic — giống code phía server) và phần template HTML bên dưới:

---
const posts = await getCollection("blog");
---
<ul>
  {posts.map((post) => <li>{post.data.title}</li>)}
</ul>

Content Collections

Đây là phần Astro dùng để quản lý nội dung Markdown/MDX có type-safe qua schema (Zod) — chính là cách site này tổ chức blog, projects, docs (xem src/content/config.ts). Mỗi bài viết là một file Markdown với frontmatter được validate tự động lúc build, tránh lỗi thiếu field hay sai kiểu dữ liệu.

Khi nào nên dùng Astro

  • Site nội dung là chính: blog, docs, marketing, portfolio
  • Cần tốc độ tải trang tối đa, ít JS
  • Vẫn muốn dùng component React/Vue ở vài chỗ cần tương tác

Không phù hợp lắm nếu bạn cần một ứng dụng tương tác nhiều (dashboard, app quản lý…) — lúc đó Next.js/Remix hay SPA thuần sẽ hợp hơn.

Tài liệu tham khảo

Tài liệu chính thức: astro.build/docs