0Pricing
HTML Academy · บทเรียน

การแยกองค์ประกอบและเทมเพลตย่อย

แบ่งไฟล์ HTML ขนาดใหญ่ออกเป็นเทมเพลตย่อยที่นำกลับมาใช้ใหม่ได้

การแยกองค์ประกอบและเทมเพลตย่อย เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

ปัญหาการทำซ้ำ

เมื่อโค้ดเบส HTML เติบโต ส่วนมาร์กอัปเดิมๆ จะปรากฏในหลายหน้า — ส่วนหัวเว็บไซต์ ส่วนท้าย แถบนำทาง การ์ดสินค้า และช่องกรอกแบบฟอร์ม การคัดลอกและวางส่วนเหล่านี้ทำให้การดูแลรักษากลายเป็นฝันร้าย การเปลี่ยนส่วนท้ายหมายถึงต้องแก้ไขทุกหน้า

การรวมส่วนย่อยฝั่งเซิร์ฟเวอร์

ภาษาเทมเพลตฝั่งเซิร์ฟเวอร์ส่วนใหญ่ (Jinja, Liquid, ERB, EJS, Handlebars, Twig) รองรับคำสั่งรวมส่วนย่อย: {% include "header.html" %} หรือ <%- include("header") %> ขั้นตอนสร้างหรือเซิร์ฟเวอร์จะฝังส่วนย่อยลงในทุกหน้าที่รวมส่วนย่อยนั้น

<!-- page.html -->
{% include "partials/header.html" %}
<main>{{ content }}</main>
{% include "partials/footer.html" %}

เฟรมเวิร์กระดับคอมโพเนนต์

JSX/TSX (React), คอมโพเนนต์แบบไฟล์เดียวของ Vue, คอมโพเนนต์ของ Svelte และคอมโพเนนต์ของ Astro นำเสนอแนวคิดเดียวกันด้วยความหมายที่ชัดเจนกว่า: คอมโพเนนต์จะห่อหุ้มโครงสร้าง รูปแบบ และพฤติกรรมไว้ด้วยกัน จากนั้นคอมไพล์เป็น HTML ณ เวลาสร้าง (SSG) หรือขณะทำงาน (SSR/CSR)

การตั้งชื่อและการจัดระเบียบ

จัดกลุ่มส่วนย่อย/คอมโพเนนต์ตามจุดประสงค์: partials/layout/ สำหรับส่วนหัว/ส่วนท้าย/แถบนำทาง, partials/blocks/ สำหรับบล็อกส่วนเปิด/คุณลักษณะ/คำกระตุ้นให้ดำเนินการ, partials/forms/ สำหรับช่องข้อมูล/ปุ่ม/รายการเลือก การจัดระเบียบอย่างสม่ำเสมอช่วยให้ค้นหาคลังส่วนย่อยได้ง่ายเมื่อคลังเติบโตขึ้น

การส่งข้อมูล

ส่วนย่อยจะมีประโยชน์มากขึ้นเมื่อรับพารามิเตอร์: {% include "button.html" with label="Save", variant="primary" %} ภายในส่วนย่อย ให้อ้างอิงพารามิเตอร์ด้วยชื่อของมัน เทมเพลตเดียวกันจะแสดงผลปุ่มที่แตกต่างกันทั่วทั้งเว็บไซต์

การประกอบแบบช่องเสียบ

สำหรับส่วนย่อยที่ห่อหุ้มเนื้อหาใดๆ เช่น การ์ดและกล่องโต้ตอบ ให้ใช้รูปแบบช่องเสียบ: {% block content %}{% endblock %} ของ Jinja, {% block %} ของ Twig และพร็อพ {children} ของ JSX ส่วนย่อยที่ห่อหุ้มจะจัดเตรียมโครงร่าง ส่วนผู้เรียกใช้จะจัดเตรียมเนื้อหาภายใน

การรวมขณะสร้างเทียบกับขณะทำงาน

เครื่องมือสร้างเว็บไซต์แบบคงที่ (11ty, Astro, Hugo, Jekyll) จะประมวลผลส่วนรวมขณะสร้าง — HTML ที่นำไปใช้งานจริงจะไม่มีไวยากรณ์ของเทมเพลต การทำเทมเพลตแบบไดนามิก (PHP, Rails, Express+EJS) จะประมวลผลขณะรับคำขอ — ยืดหยุ่นกว่าแต่ช้ากว่า ให้เลือกตามว่าเนื้อหาต้องเปลี่ยนแปลงตามแต่ละคำขอหรือไม่

การยึดโยงกับ CSS

ส่วนย่อยควรมี CSS ของตัวเอง ส่วนย่อยส่วนท้ายเป็นเจ้าของ footer.css และส่วนย่อยปุ่มเป็นเจ้าของ button.css เมื่อใช้ร่วมกับขั้นตอนสร้างที่รวมเฉพาะ CSS ของส่วนย่อยที่ใช้จริงในหน้านั้น ก็จะไม่ต้องโหลด CSS ของทุกคอมโพเนนต์ในทุกหน้า

การทดสอบส่วนย่อย

ส่วนย่อยแต่ละส่วนควรทดสอบแบบแยกอิสระได้: แสดงผลด้วยข้อมูลหลากหลายรูปแบบ แล้วตรวจสอบผลลัพธ์ เครื่องมืออย่างการทดสอบคอมโพเนนต์ด้วย Cypress หรือการทดสอบภาพรวมด้วย Jest ใช้กับส่วนย่อย HTML ได้เช่นกัน ส่วนย่อยที่ผ่านการทดสอบแล้วจะปรับเปลี่ยนได้อย่างปลอดภัยโดยไม่ต้องตรวจสอบทุกหน้าที่เรียกใช้ด้วยตนเอง

การจัดการเวอร์ชันและการเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้

ส่วนย่อยคือ API การเปลี่ยนชื่อพารามิเตอร์ รูปแบบช่องเสียบ หรือพร็อพที่จำเป็น ถือเป็นการเปลี่ยนแปลงที่ทำให้ผู้เรียกใช้ทุกแห่งใช้งานไม่ได้ โปรดบันทึกสัญญาการใช้งานของส่วนย่อย ยกเลิกการใช้งานอย่างค่อยเป็นค่อยไป และใช้เครื่องมือค้นหาเพื่อค้นหาการใช้งานทุกจุดก่อนปรับโครงสร้าง

การประกอบส่วนย่อยหลายส่วน

สร้างหน้าโดยประกอบส่วนย่อยต่างๆ เข้าด้วยกัน: ส่วนหัว + แถบด้านข้าง + เนื้อหา + ส่วนท้าย + ส่วนย่อยวิเคราะห์ข้อมูล แต่ละส่วนย่อยมีขนาดเล็กและมุ่งเน้นหน้าที่ของตนเอง ส่วนหน้าเว็บจึงกลายเป็นเพียงสคริปต์ประกอบที่เชื่อมส่วนต่างๆ เข้าด้วยกัน ทำความเข้าใจได้ง่ายกว่า HTML ไฟล์เดียวขนาด 800 บรรทัดมาก

แนวทางการย้าย

หากต้องการแยกส่วนย่อย: ระบุมาร์กอัปที่ซ้ำกันในหลายหน้า คัดลอกไปไว้ที่ partials/X.html แทนที่แต่ละจุดด้วยคำสั่งรวมส่วนย่อย และกำหนดค่าแตกต่างระหว่างผู้เรียกใช้ให้เป็นพารามิเตอร์ ทำทีละส่วนย่อย แล้วโค้ดเบสจะดีขึ้นอย่างต่อเนื่อง

ตรวจสอบความรู้

ประโยชน์หลักของการแยกส่วน HTML ที่ซ้ำกัน เช่น ส่วนท้ายเว็บไซต์ ไปเป็นส่วนย่อยคืออะไร

สรุป

แยก HTML ที่ซ้ำกันออกเป็นส่วนย่อย/คอมโพเนนต์ผ่านการรวมส่วนย่อยฝั่งเซิร์ฟเวอร์ (Jinja, Twig, EJS) หรือคอมโพเนนต์ของเฟรมเวิร์ก (React, Vue, Svelte, Astro) ส่งข้อมูลผ่านพารามิเตอร์ และประกอบเนื้อหาผ่านช่องเสียบ จัดกลุ่มตามจุดประสงค์ ทดสอบแบบแยกอิสระ และถือว่าสัญญาการใช้งานของส่วนย่อยเป็น API ย้ายทีละน้อย — การแยกแต่ละครั้งลดการทำซ้ำและช่วยให้ดูแลรักษาได้ง่ายขึ้น

คำถามที่พบบ่อย

บทเรียน “การแยกองค์ประกอบและเทมเพลตย่อย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแยกองค์ประกอบและเทมเพลตย่อย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแยกองค์ประกอบและเทมเพลตย่อย”

แบ่งไฟล์ HTML ขนาดใหญ่ออกเป็นเทมเพลตย่อยที่นำกลับมาใช้ใหม่ได้ คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การแยกองค์ประกอบและเทมเพลตย่อย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม

ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแยกองค์ประกอบและเทมเพลตย่อย
  2. การสร้างเทมเพลตฝั่งเซิร์ฟเวอร์ Jinja2 Handlebars
  3. HTML ในระบบการออกแบบ
  4. การผสานเอกสารและคู่มือรูปแบบ
← กลับไปที่ HTML Academy