Praktische Anwendungsfälle für Tagged Templates
Erstellen Sie mit Tags sicheres HTML und formatierte Strings.
Praktische Anwendungsfälle für Tagged Templates ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Tags aus der Praxis
Getaggte Vorlagen bilden die Grundlage vieler Bibliotheken: HTML-Escaping, styled components, GraphQL-Abfragen und i18n. Die gemeinsame Idee besteht darin, interpolierte Werte abzufangen und sicher zu verarbeiten.
function tag(s, ...v) { return s[0] + v[0] + s[1] }
console.log(tag(["<", ">"], "b"))Das Escaping-Problem
Wenn Sie HTML aus Benutzereingaben erstellen, können Sonderzeichen wie das Kleiner-als-Zeichen Markup einschleusen. Eine Tag-Funktion kann diese Zeichen automatisch escapen – und zwar nur in den interpolierten Werten.
const danger = "<script>"
console.log("raw: " + danger)Eine Escaping-Hilfsfunktion
Zunächst definieren wir eine Hilfsfunktion, die gefährliche Zeichen durch sichere HTML-Entitäten ersetzt.
function escapeHtml(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
}
console.log(escapeHtml("<b>"))Sicherer HTML-Tag
Nun erstellen wir einen Tag, der jeden interpolierten Wert escapet, die statischen Vorlagenteile jedoch unverändert lässt, da diese vom vertrauenswürdigen Entwickler stammen.
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>"))Warum statische Teile unverändert bleiben
Nur die interpolierten Werte sind nicht vertrauenswürdige Benutzerdaten. Die literalen Vorlagenteile werden vom Entwickler geschrieben und bleiben daher unverändert, damit das vorgesehene Markup funktioniert.
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>"))Tag für formatierte Ausgabe
Ein weiteres Muster umschließt interpolierte Werte mit Formatierungsmarkierungen, um beispielsweise Zahlen in einem Bericht hervorzuheben.
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))Query-Strings erstellen
Tags können Werte für URLs kodieren und jedes interpolierte Teilstück escapen, sodass die statische Struktur erhalten bleibt und die Daten sicher kodiert werden.
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"))Pluralbildung
Ein Tag kann einen Wert untersuchen und den umgebenden Text anpassen, beispielsweise indem er zwischen Singular und Plural wählt.
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))Einrückung entfernen
Tags können mehrzeilige Vorlagen bereinigen, indem sie die führende Einrückung jeder Zeile entfernen und so eine übersichtliche Ausgabe erzeugen.
function dedent(strings) {
return strings[0].split("\n").map(function (l) { return l.trim() }).join("\n")
}
console.log(dedent([" a\n b\n c"]))Tags kombinieren
Sie können Verhalten schichten, indem ein Tag Hilfsfunktionen aufruft. Hier umschließt der Tag Werte und hebt sie zugleich hervor.
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"))Wann Sie keine Tags verwenden sollten
Für einfache Zeichenketten reicht ein gewöhnliches Template-Literal aus. Verwenden Sie eine Tag-Funktion nur, wenn Sie interpolierte Werte einheitlich umwandeln müssen, etwa für Escaping oder Lokalisierung.
const name = "Lee"
console.log("Welcome, " + name)Schnelltest
Testen Sie Ihr praktisches Wissen über Tags.
Zusammenfassung
Zusammenfassung: Getaggte Vorlagen ermöglichen eine sichere und formatierte Ausgabe.
- Escapen Sie für HTML-Sicherheit nur interpolierte Werte
- Statische Teile bleiben vertrauenswürdig und unverändert
- Verwenden Sie Tags für Styling, Kodierung und Pluralbildung
- Bevorzugen Sie gewöhnliche Literale, wenn keine Umwandlung erforderlich ist
function safe(s, v) { return s[0] + String(v).replace(/</g, "<") }
console.log(safe(["x="], "<a>"))Häufig gestellte Fragen
Ist die Lektion „Praktische Anwendungsfälle für Tagged Templates“ kostenlos?
Ja — der vollständige Text von „Praktische Anwendungsfälle für Tagged Templates“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Praktische Anwendungsfälle für Tagged Templates“?
Erstellen Sie mit Tags sicheres HTML und formatierte Strings. Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um JavaScript Academy zu starten?
Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Praktische Anwendungsfälle für Tagged Templates“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Grundlagen der String-Interpolation
- Mehrzeilige Strings
- Tagged-Template-Funktionen
- Praktische Anwendungsfälle für Tagged Templates