capypad
0 Tage Serie
javascript / intermediate
Snippet

Fortgeschrittene Verarbeitung mit Tagged Templates

Tagged Templates ermöglichen es, Template-Literale mit einer Funktion zu parsen. Das erste Argument enthält ein Array von String-Literalen, die weiteren Argumente sind die Werte der Ausdrücke. Dies ist nützlich für DSLs, das Bereinigen von HTML oder Internationalisierung.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
function sanitize(strings, ...values) {
return strings.reduce((acc, str, i) => {
let val = String(values[i] || '');
return acc + str + val.replace(/&/g, '&amp;').replace(/</g, '&lt;');
}, '');
}
 
const input = '<script>alert(1)</script>';
const message = sanitize`User input: ${input}`;
console.log(message); // User input: &lt;script>alert(1)&lt;/script>
Erklärung
1
function sanitize(strings, ...values)
Eine Tag-Funktion, die String-Teile und interpolierte Werte getrennt erhält.
2
strings.reduce((acc, str, i) => ...)
Iteriert durch die Strings und Werte, um das Endergebnis zu rekonstruieren.
3
val.replace(/</g, '&lt;')
Wendet eine Validierungslogik auf die interpolierten Werte an, bevor sie zusammengefügt werden.