กรณีใช้งานแม่แบบติดแท็กจริง
สร้าง HTML ที่ปลอดภัยและข้อความที่จัดรูปแบบด้วยแท็ก
กรณีใช้งานแม่แบบติดแท็กจริง เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
แท็กในโลกจริง
แม่แบบที่มีแท็กเป็นพื้นฐานของไลบรารีมากมาย เช่น การหลีกอักขระ HTML, คอมโพเนนต์ที่มีรูปแบบ, คำสั่ง GraphQL และการปรับให้เข้ากับภาษาต่าง ๆ แนวคิดร่วมกันคือการดักรับค่าที่แทรกเพื่อประมวลผลอย่างปลอดภัย
function tag(s, ...v) { return s[0] + v[0] + s[1] }
console.log(tag(["<", ">"], "b"))ปัญหาการหลีกอักขระ
เมื่อสร้าง HTML จากข้อมูลนำเข้าของผู้ใช้ อักขระพิเศษอย่างเครื่องหมายเล็กกว่าสามารถแทรกมาร์กอัปได้ ฟังก์ชันแท็กสามารถหลีกอักขระเหล่านี้โดยอัตโนมัติ เฉพาะในค่าที่แทรกเท่านั้น
const danger = "<script>"
console.log("raw: " + danger)ตัวช่วยหลีกอักขระ
ขั้นแรก เรากำหนดตัวช่วยที่แทนที่อักขระอันตรายด้วยเอนทิตี HTML ที่ปลอดภัย
function escapeHtml(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
}
console.log(escapeHtml("<b>"))แท็ก HTML ที่ปลอดภัย
ตอนนี้เราจะสร้างแท็กที่หลีกอักขระในค่าที่แทรกทุกค่า แต่ปล่อยส่วนคงที่ของแม่แบบไว้ตามเดิม เนื่องจากส่วนเหล่านั้นมาจากผู้พัฒนาที่เชื่อถือได้
function escapeHtml(str) {
return String(str).replace(/</g, "<").replace(/>/g, ">")
}
function safe(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
out += s + (values[i] !== undefined ? escapeHtml(values[i]) : "")
})
return out
}
console.log(safe(["<p>", "</p>"], "<script>"))เหตุผลที่ส่วนคงที่ยังเป็นข้อความดิบ
มีเพียงค่าที่แทรกเท่านั้นที่เป็นข้อมูลผู้ใช้ซึ่งไม่น่าเชื่อถือ ส่วนแม่แบบตามตัวอักษรถูกเขียนโดยผู้พัฒนา จึงไม่ต้องหลีกอักขระ เพื่อให้มาร์กอัปที่ตั้งใจไว้ยังทำงานได้
function safe(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
const safer = values[i] !== undefined ? String(values[i]).replace(/</g, "<") : ""
out += s + safer
})
return out
}
console.log(safe(["<b>", "</b>"], "<i>x</i>"))แท็กผลลัพธ์ที่จัดรูปแบบ
อีกรูปแบบหนึ่งคือการครอบค่าที่แทรกด้วยเครื่องหมายจัดรูปแบบ เช่น เพื่อเน้นตัวเลขในรายงาน
function money(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
out += s + (values[i] !== undefined ? "$" + Number(values[i]).toFixed(2) : "")
})
return out
}
console.log(money(["Total: ", ""], 9.5))การสร้างสตริงแบบสอบถาม
แท็กสามารถเข้ารหัสค่าสำหรับที่อยู่เว็บ โดยหลีกอักขระในแต่ละส่วนที่แทรก เพื่อให้โครงสร้างคงที่ไม่เปลี่ยนแปลงขณะที่ข้อมูลถูกเข้ารหัสอย่างปลอดภัย
function url(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
out += s + (values[i] !== undefined ? encodeURIComponent(values[i]) : "")
})
return out
}
console.log(url(["/search?q=", ""], "a b&c"))การผันรูปเอกพจน์และพหูพจน์
แท็กสามารถตรวจสอบค่าและปรับข้อความโดยรอบได้ เช่น เลือกใช้คำรูปเอกพจน์หรือพหูพจน์
function plural(strings, count) {
const noun = count === 1 ? "item" : "items"
return strings[0] + count + " " + noun
}
console.log(plural(["You have "], 1))
console.log(plural(["You have "], 3))การตัดการเยื้อง
แท็กสามารถจัดระเบียบแม่แบบหลายบรรทัดด้วยการลบการเยื้องด้านหน้าของแต่ละบรรทัด ทำให้ได้ผลลัพธ์ที่เรียบร้อย
function dedent(strings) {
return strings[0].split("\n").map(function (l) { return l.trim() }).join("\n")
}
console.log(dedent([" a\n b\n c"]))การประกอบแท็ก
คุณสามารถเพิ่มพฤติกรรมเป็นชั้น ๆ ได้ โดยให้แท็กหนึ่งเรียกใช้ตัวช่วยต่าง ๆ ในที่นี้ แท็กจะครอบและเน้นค่าพร้อมกัน
function emph(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
const v = values[i] !== undefined ? "**" + values[i] + "**" : ""
out += s + v
})
return out
}
console.log(emph(["Note: ", "!"], "important"))กรณีที่ไม่ควรใช้แท็ก
สำหรับสตริงง่าย ๆ แม่แบบตามตัวอักษรธรรมดาก็เพียงพอแล้ว ควรใช้ฟังก์ชันแท็กเมื่อจำเป็นต้องแปลงค่าที่แทรกอย่างสม่ำเสมอเท่านั้น เช่น เพื่อหลีกอักขระหรือปรับให้เข้ากับภาษา
const name = "Lee"
console.log("Welcome, " + name)ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เชิงปฏิบัติเกี่ยวกับแท็กของคุณ
ทบทวน
ทบทวน: แม่แบบที่มีแท็กช่วยให้สร้างผลลัพธ์ที่ปลอดภัยและจัดรูปแบบแล้ว
- หลีกอักขระเฉพาะค่าที่แทรกเพื่อความปลอดภัยของ HTML
- ส่วนคงที่ยังเป็นส่วนที่เชื่อถือได้และเป็นข้อความดิบ
- ใช้แท็กสำหรับการจัดรูปแบบ การเข้ารหัส และการผันรูปเอกพจน์พหูพจน์
- เลือกใช้แม่แบบตามตัวอักษรธรรมดาเมื่อไม่จำเป็นต้องแปลงข้อมูล
function safe(s, v) { return s[0] + String(v).replace(/</g, "<") }
console.log(safe(["x="], "<a>"))คำถามที่พบบ่อย
บทเรียน “กรณีใช้งานแม่แบบติดแท็กจริง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กรณีใช้งานแม่แบบติดแท็กจริง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กรณีใช้งานแม่แบบติดแท็กจริง”
สร้าง HTML ที่ปลอดภัยและข้อความที่จัดรูปแบบด้วยแท็ก คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “กรณีใช้งานแม่แบบติดแท็กจริง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม
ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐานการแทรกข้อความ
- ข้อความหลายบรรทัด
- ฟังก์ชันแม่แบบติดแท็ก
- กรณีใช้งานแม่แบบติดแท็กจริง