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
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, '&').replace(/</g, '<');}, '');}const input = '<script>alert(1)</script>';const message = sanitize`User input: ${input}`;console.log(message); // User input: <script>alert(1)</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, '<')
Wendet eine Validierungslogik auf die interpolierten Werte an, bevor sie zusammengefügt werden.