การใช้ template กับการแสดงผลด้วย JavaScript
ผสานเทมเพลตกับลูป JavaScript เพื่อสร้างรายการแบบไดนามิก
การใช้ template กับการแสดงผลด้วย JavaScript เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
องค์ประกอบ template
องค์ประกอบ <template> ใช้เก็บ HTML ที่จะยังไม่แสดงผลจนกว่าจะถูกโคลนและเพิ่มโดย JavaScript เนื้อหาขององค์ประกอบนี้ไม่ทำงาน — สคริปต์จะไม่ทำงาน รูปภาพจะไม่โหลด และสไตล์จะไม่มีผล — จนกว่า template จะถูกเปิดใช้งาน
การเข้าถึงเนื้อหาใน template
เนื้อหาของ template อยู่ใน DocumentFragment ที่ template.content หากต้องการใช้งาน ให้โคลน fragment: const clone = template.content.cloneNode(true) อาร์กิวเมนต์ true จะทำการโคลนแบบลึก ซึ่งรวมโหนดลูกหลานทั้งหมด
การแสดงอินสแตนซ์ของ template
ปรับแต่งสำเนาที่โคลนแล้วก่อนเพิ่มเข้าไป: ค้นหาภายในสำเนา กำหนดเนื้อหาข้อความ และเพิ่มตัวฟังเหตุการณ์ จากนั้นเพิ่มเข้า DOM: container.appendChild(clone) การเรียก cloneNode() แต่ละครั้งจะสร้างสำเนาอิสระ ซึ่งคุณสามารถแก้ไขสำเนาหนึ่งได้โดยไม่กระทบสำเนาอื่น
const tmpl = document.getElementById("card-template");
function renderCard(data) {
const clone = tmpl.content.cloneNode(true);
clone.querySelector(".title").textContent = data.title;
clone.querySelector(".body").textContent = data.body;
container.appendChild(clone);
}การแสดงรายการจาก template
ใช้ template ร่วมกับ Array.forEach หรือ Array.map เพื่อแสดงรายการ: สำหรับแต่ละรายการในข้อมูล ให้โคลน template เติมค่า และเพิ่มเข้าไปใน container ของรายการ รูปแบบนี้คล้ายการทำงานของเฟรมเวิร์ก แต่สร้างขึ้นจาก HTML และ JavaScript มาตรฐาน
template สำหรับแถวตาราง
กำหนด <template> ที่มี <tr> พร้อมเซลล์ จากนั้นโคลนและเติมข้อมูลสำหรับแต่ละแถว วิธีนี้หลีกเลี่ยงการต่อสตริงเพื่อสร้าง HTML — ไม่จำเป็นต้องทำการหลีกอักขระ เนื่องจากคุณกำหนด textContent แทน innerHTML
การเปิดใช้งาน template ต้องทำอย่างชัดเจน
template จะไม่แสดงผลโดยอัตโนมัติ จึงปลอดภัยสำหรับเก็บ fragment ที่จะแสดงตามเงื่อนไข เช่น แสดง template "ไม่พบผลลัพธ์" เฉพาะเมื่อการค้นหาไม่พบข้อมูล แสดง template ข้อผิดพลาดเฉพาะเมื่อเครือข่ายล้มเหลว และแสดงโครงร่างขณะโหลดระหว่างดึงข้อมูล
template แบบซ้อนกัน
template สามารถมี template อื่นอยู่ภายในได้ — template ที่ซ้อนกันจะยังไม่ทำงานภายใน DocumentFragment ของ template ภายนอก วิธีนี้ช่วยให้สร้างลำดับชั้นที่มีลักษณะเหมือนคอมโพเนนต์ โดย template ภายนอกจะโคลนและเปิดใช้งาน template ภายในตามต้องการ
สไตล์แบบจำกัดขอบเขตใน template
สไตล์ภายในแท็ก <style> ของ template จะไม่มีผลกับเอกสาร — สไตล์เหล่านี้จะไม่ทำงานจนกว่า template จะถูกสร้างอินสแตนซ์และเนื้อหาถูกย้ายไปยัง DOM ที่ใช้งานอยู่ วิธีนี้ทำให้ template มีสไตล์ของตัวเองได้โดยไม่รบกวนหน้าเว็บ
template เทียบกับ innerHTML
การแยกวิเคราะห์ innerHTML เป็นการประมวลผลสตริง HTML แบบทันที — HTML จะถูกแยกวิเคราะห์ใหม่ทุกครั้ง ส่วน template.cloneNode() จะคัดลอกโครงสร้างต้นไม้ที่แยกวิเคราะห์ไว้แล้ว สำหรับการแสดงโครงสร้างเดิมซ้ำ ๆ การโคลน template จะเร็วกว่าและหลีกเลี่ยงความเสี่ยงจาก XSS ที่เกิดจากการต่อสตริง
ข้อจำกัดของการผูกข้อมูล
องค์ประกอบ template ไม่มีการผูกข้อมูลในตัว — คุณต้องค้นหาและเติมข้อมูลให้แต่ละสำเนาด้วยตนเอง หากต้องการการผูกข้อมูลที่ซับซ้อน ควรใช้เฟรมเวิร์กหรือไลบรารีที่เหมาะสมกว่า template เหมาะสำหรับรูปแบบการแสดงผลแบบง่ายที่ทำด้วยตนเอง โดยไม่ต้องมีค่าใช้จ่ายของเฟรมเวิร์ก
การรองรับของเบราว์เซอร์
องค์ประกอบ template รองรับในเบราว์เซอร์สมัยใหม่ทั้งหมด (IE11 รองรับเพียงบางส่วน) สำหรับสภาพแวดล้อมที่ต้องรองรับ IE ให้ใช้โพลีฟิลล์โดยแยกวิเคราะห์เนื้อหา template เมื่อเริ่มต้น ในโครงการสมัยใหม่ ให้ใช้ template ได้โดยไม่ต้องมีโพลีฟิลล์
ตรวจสอบความรู้
เหตุใดจึงนิยมใช้ template.content.cloneNode(true) มากกว่า innerHTML สำหรับการแสดงผลซ้ำ
สรุป
องค์ประกอบ template ใช้เก็บ fragment ของ HTML ที่แยกวิเคราะห์ไว้ล่วงหน้าและไม่ทำงาน การโคลน template.content จะสร้างอินสแตนซ์อิสระสำหรับการผูกข้อมูลด้วยตนเอง เมื่อใช้ร่วมกับการกำหนดค่าด้วย textContent ซึ่งไม่มี XSS จะทำให้ template รองรับการแสดงรายการที่มีลักษณะเหมือนเฟรมเวิร์ก ส่วนติดต่อผู้ใช้แบบมีเงื่อนไข และรูปแบบ HTML ที่นำกลับมาใช้ใหม่ได้ โดยใช้เพียงส่วนติดต่อมาตรฐานของเบราว์เซอร์
คำถามที่พบบ่อย
บทเรียน “การใช้ template กับการแสดงผลด้วย JavaScript” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การใช้ template กับการแสดงผลด้วย JavaScript” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การใช้ template กับการแสดงผลด้วย JavaScript”
ผสานเทมเพลตกับลูป JavaScript เพื่อสร้างรายการแบบไดนามิก คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การใช้ template กับการแสดงผลด้วย JavaScript” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม
ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- องค์ประกอบ template: เนื้อหาที่ไม่มีการทำงาน
- โคลนเทมเพลตด้วย cloneNode
- การใช้ template กับการแสดงผลด้วย JavaScript
- เทมเพลตเทียบกับความปลอดภัยของ innerHTML