Tại sao mình chọn Astro thay vì React
Tại sao mình bỏ React cho những website không cần nó
Mình đã làm hai dự án với Astro gần đây.
Và mình nhận được một vài lợi ích thực tế của Astro mà trội hơn React.
Kì lạ là khi mình tìm YouTube, không người Việt nào nói về Astro cả.
Hôm tháng ba năm 2025, mình làm trang web danh sách là dsdaihoc.com.
Trước đây khi dùng Next.js, mình phải dựng cả database. Dùng Supabase để quản lý dữ liệu. Viết API. Rồi mới có giao diện cho người dùng thấy.
Hồi đấy mình cũng không hiểu nhiều vì mới học lập trình. Mình mới thử mỗi Next.js, nên không có nhiều hiểu biết để so sánh.
Sau hơn chín tháng kinh nghiệm, mình bắt đầu thử Astro.
Mình quăng thẳng file data CSV vào. Không phải sửa gì. Không phải import vào Supabase hay database SQL gì cả.
Lúc đó mình mới nhận ra: mình đã làm phức tạp mọi thứ trong chín tháng qua.
I – Công cụ phức tạp không phải là công cụ tốt, chỉ là công cụ có nhiều tính năng
Đây là sai lầm mình mắc phải.
Khi mình mới học lập trình, mình nghĩ framework mạnh là framework làm được nhiều thứ. Next.js làm được mọi thứ. Nó có SSR, API routes, image optimization, database integration.
Nên mình nghĩ Next.js là lựa chọn đúng cho mọi dự án.
Nhưng mình đã nhầm.
Cho đến khi mình thử Astro với dsdaihoc.com. Mình chỉ cần hiển thị danh sách trường đại học. Dữ liệu nằm trong file CSV. Không cần database. Không cần API. Không cần state management phức tạp.
Với Next.js, mình phải setup Supabase, viết API route, fetch data, quản lý state, lo về loading state và error handling.
Với Astro, mình import file CSV vào là xong.
Và lúc đó mình mới thấy: công cụ tốt không phải là công cụ làm được nhiều thứ nhất. Công cụ tốt là công cụ phù hợp nhất với việc bạn đang làm.
Astro được thiết kế cho content. Nó tích hợp với CSV và Markdown rất tốt. Nó tối ưu cho SEO từ đầu. Nó tạo ra HTML tĩnh thay vì quăng hàng đống JavaScript.
Khi mình test PageSpeed cho finguidevn, mình sốc nặng khi điểm SEO cực cao.
Những trang chạy bằng WordPress hay Next.js chắc chắn thua xa.
Vì Astro không cố gắng làm mọi thứ. Nó chỉ làm một việc và làm rất tốt.
II – Đơn giản không có nghĩa là giới hạn, nó có nghĩa là bạn chỉ thêm gì khi cần
Đây là điều mình thích nhất về Astro.
Nó đơn giản. Nhưng đơn giản không có nghĩa là yếu.
Astro cho bạn một nền tảng tối giản. HTML tĩnh. Nhanh. Thân thiện SEO. Không có JavaScript thừa.
Rồi khi bạn cần tương tác, bạn mới thêm vào.
Cần ô tìm kiếm động? Nhúng React component vào. Cần filter thời gian thực? Thêm Svelte component. Cần form phức tạp? Dùng Vue component.
Astro không ép bạn phải dùng một framework duy nhất. Nó để bạn chọn đúng tool cho đúng việc.
Và đây là điểm khác biệt lớn với React hay Next.js.
React bắt bạn làm mọi thứ theo cách của React. Mọi thứ đều là component. Mọi thứ đều chạy trên client. Bạn phải quản lý state cho cả những thứ không cần state.
Next.js cũng vậy. Nó cho bạn cả đống tính năng từ đầu. SSR, API routes, middleware, image optimization. Dù bạn có cần hay không.
Kết quả là bạn mang theo hàng tấn complexity mà project của bạn không hề cần.
Build time lâu hơn. Bundle size lớn hơn. Deploy phức tạp hơn. Chi phí cao hơn.
Với Astro, bạn bắt đầu từ đơn giản nhất. Rồi chỉ thêm vào những gì bạn thực sự cần.
Và khi làm website nội dung, bạn cũng không cần quá nhiều tính năng phức tạp.
Viết Markdown dễ dàng. Không cần lắp thêm CMS phức tạp. Làm trang danh sách từ CSV chỉ cần file dữ liệu xong, nó xử lý được luôn. Khi cần tương tác, vẫn có thể nhúng React vào. Không bị giới hạn.
Load nhanh, nhẹ, thân thiện SEO hơn nhiều so với React. Vì Astro ưu tiên HTML tĩnh.
Và quan trọng nhất là nó tối giản. Dùng AI code rất dễ và ít lỗi. Không bị thỉnh thoảng vướng state management như khi mình dùng React.
III – Chọn tool theo công việc, không phải theo thói quen
Đây là bài học lớn nhất mình rút ra sau hai dự án với Astro.
Trước đây mình chọn tool theo thói quen. Next.js là cái mình biết. Nên mình dùng Next.js cho mọi thứ.
Bây giờ mình chọn tool theo công việc.
Nếu bạn xây web app tương tác nặng, dashboard phức tạp, nhiều state chạy trên client, React vẫn là lựa chọn dễ mở rộng hơn.
Nhưng với đa số website dạng truyền thống như blog, landing page bán hàng, site chia sẻ thông tin, React và Next.js là quá nhiều tính năng thừa.
Bạn phải gánh thêm layer API, trong khi thực ra chỉ cần hiển thị nội dung cho nhanh và rõ ràng.
Và đây là điều mà mình mất chín tháng mới nhận ra: việc chọn đúng tool quan trọng hơn việc thành thạo một tool.
Khi bạn dùng đúng tool cho đúng việc, mọi thứ trở nên đơn giản hơn rất nhiều.
Code ít hơn. Build nhanh hơn. Deploy dễ hơn. Ít bug hơn. Chi phí thấp hơn.
Bạn không phải vật lộn với complexity không cần thiết. Bạn không phải setup database cho một danh sách tĩnh. Bạn không phải viết API cho content không đổi.
Bạn chỉ cần import file CSV vào là xong.
Và lúc đó bạn mới thấy: đơn giản mới là khó nhất. Vì đơn giản đòi hỏi bạn phải biết đủ để chọn đúng tool, thay vì dùng cái quen cho mọi thứ.
Nếu bạn đang làm website nội dung, thử Astro cho một dự án nhỏ.
Bạn sẽ thấy ngay sự khác biệt. Không cần phức tạp. Nhẹ đầu hơn nhiều.
Nếu bạn đã thử Astro hoặc đang dùng tool khác cho content site, mình muốn nghe bạn chọn gì và tại sao.