ข้ามไปยังเนื้อหา

Components & Templating

โมดูล Foundations ให้ mental model กับคุณไปแล้ว — component .astro คือฟังก์ชันที่รับ props แล้ว render เป็น HTML บน server โมดูลนี้จะซูมเข้าไปที่ตัว ภาษา template เอง — syntax ที่คุณใช้เปลี่ยนข้อมูลให้เป็น markup, จัด style, ใส่ behavior ฝั่ง browser นิดหน่อย และประกอบ component เข้าด้วยกัน

ไม่มีอะไรในนี้ที่ hydrate หรือส่ง framework ลง browser เลย นั่นเป็นเรื่องของโมดูลถัดไป (Islands) ตรงนี้เราอยู่ฝั่ง server ล้วน ๆ — expression, style, slot และ Markdown ที่ผลิต HTML ของคุณออกมา

บทเรียนสิ่งที่คุณจะได้เรียน
Astro syntax deep diveexpression, conditional, loop, Fragment, set:html, spread attribute
Styles & scriptsscoped vs global CSS, define:vars และ <script> ทำงานยังไงจริง ๆ
Slots & compositionnamed slot, fallback content, เช็ค slot, สร้าง layout
Markdown & MDXหน้า Markdown, ใส่ layout และการใช้ component ใน .mdx
flowchart LR
  data["props and data"] --> tmpl["template: expressions, loops, slots"]
  css["scoped styles"] --> tmpl
  tmpl --> html["rendered HTML plus scoped CSS"]
  html --> ship["shipped to the browser, zero JS by default"]
อะไรที่เปลี่ยน template ของคุณเป็น HTML ที่ส่งออกไป

ทุกฟีเจอร์ในโมดูลนี้คือวิธีอธิบาย HTML ให้แสดงออกได้มากขึ้น โดยยังรักษาสัญญา zero-JS-by-default ไว้ expression กับ loop ให้ข้อมูลขับ markup ได้ scoped style เก็บ CSS ไว้เฉพาะที่โดยไม่ต้องพิธีรีตอง slot ให้ component ห่อ content ที่ยังไม่รู้ล่วงหน้าได้ และ Markdown/MDX ให้คุณเขียน content เป็นร้อยแก้วแต่ยังหย่อน component ลงไปตรงที่ต้องการได้

โมดูลนี้โฟกัสที่เลเยอร์ไหนของ Astro?
โดย default templating ที่พูดถึงในนี้ส่งอะไรไปที่ browser?
หัวข้อไหนเป็นของโมดูล *ถัดไป* ไม่ใช่โมดูลนี้?