Astro: The web framework for content-driven websites นี่คือสโลแกนของ Astro ในหน้าเว็บ
Astro คือ คือเฟรมเวิร์คสำหรับสร้างเว็บไซต์ที่เน้นเนื้อหา (Content) เป็นหลัก และเน้นเรื่องประสิทธิภาพและความเร็ว โดยใช้แนวคิด “Islands Architecture” ที่ช่วยให้เว็บไซต์โหลดเร็วและมีประสิทธิภาพสูง

เว็บไซต์ของ Astro
ข้อดีของ Astro
- Islands : Frontend architecture ที่ช่วยให้หน้าเว็บโหลดเร็วขึ้น โดยแบ่ง HTML เป็นส่วนเล็กๆ
- Zero JS, by default : เว็บไซต์โหลดเร็วเพราะส่ง JavaScript น้อยที่สุดไปยังผู้ใช้
- รองรับการใช้งานร่วมกับ UI Framework ต่างๆ ทั้ง React, Vue, Svelte
- รองรับทั้ง Static site และ Server Side Rendering (SSR)
- รองรับการจัดการ content ด้วย Markdown/MDX
- มีเรื่อง Content Layer / Collection ที่ช่วยให้จัดการเนื้อหาได้ง่ายขึ้น
- มี built-in
ViewTransitionมาให้ในตัว

คุณสามารถเข้าดุเว็บ astro.new เพื่อดูตัวอย่างได้
เริ่มต้น Astro
มาลองเริ่มต้นสร้างโปรเจ็คด้วย Astro กัน สิ่งที่ต้องมีคือ Node.js (แนะนำ v.18 หรือ v20 ขึ้นไป) ตัว v19 ไม่รองรับ
เวอร์ชั่น Astro คือ v5.0.3 ณ วันที่เขียนบทความ
สร้างโปรเจ็ค ด้วย template minimal
# กรณีใช้ npmnpm create astro@latest -- --template minimal
# กรณีใช้ pnpmpnpm create astro@latest --template minimal
# กรณีใช้ yarnyarn create astro --template minimal
# กรณีใช้ bunbun create astro --template minimalจากนั้น ตัว prompt ก็จะถามเราว่าจะใช้สร้างโปรเจ็คไว้ที่ folder อะไร รวมถึง ติดตั้ง dependencies และ git repository เลยหรือไม่
เมื่อติดตั้งเสร็จเรียบร้อย จะได้ผลลัพธ์แบบด้านล่าง
astro Launch sequence initiated.
dir Where should we create your new project? ./astro-minimal ◼ tmpl Using minimal as project template
deps Install dependencies? Yes
git Initialize a new git repository? Yes
✔ Project initialized! ■ Template copied ■ Dependencies installed ■ Git initialized
next Liftoff confirmed. Explore your project!
Enter your project directory using cd ./astro-minimal Run bun run dev to start the dev server. CTRL+C to stop. Add frameworks like react or tailwind using astro add.
Stuck? Join us at https://astro.build/chat
╭─────╮ Houston:│ ◠ ◡ ◠ Good luck out there, astronaut! 🚀ทำการเปิดโปรเจ็คด้วย VS Code ขึ้นมา จะเห็นว่า ตัว Project structure จะมีหน้าตาแบบนี้
tree -L 3 -I 'node_modules'
.├── README.md├── astro.config.mjs├── bun.lockb├── package.json├── public│ └── favicon.svg├── src│ └── pages│ └── index.astro└── tsconfig.jsonไฟล์สำคัญคือ
astro.config.mjs- ไฟล์สำหรับตั้งค่าต่างๆ ของ Astrosrc/pages/index.astro- ไฟล์ index สำหรับเป็นหน้าเว็บ ตัว Astro รองรับ file-based routing
ทำการ start server ขึ้นมา ด้วยคำสั่ง (ในบทความผมใช้ bun แต่ผู้อ่านสามารถเลือกใช้ npm/pnpm หรือ yarn ก็ได้)
bun devตัว server จะทำการ start และเราจะได้หน้าเว็บที่ url : http://localhost:4321/
Pages
ใน Astro เราสามารถสร้าง pages ได้ด้วยการสร้างไฟล์ใน โฟลเดอร์ /src/pages เราเริ่มด้วยการสร้างหน้า About ขึ้นมาก่อน ด้วยไฟล์ about.astro
---
---
<html lang="en"> <head> <meta charset="utf-8" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <meta name="viewport" content="width=device-width" /> <meta name="generator" content={Astro.generator} /> <title>About</title> </head> <body> <h1>นี่คือหน้า About</h1> </body></html>