Tagitettujen templatejen käytännön käyttötapaukset
Rakentakaa turvallista HTML:ää ja tyyliteltyjä merkkijonoja tagien avulla.
Tagitettujen templatejen käytännön käyttötapaukset on ilmainen JavaScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu JavaScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.
Tagien käyttö käytännössä
Tagitetut template-literaalit ovat monien kirjastojen perusta: niitä käytetään HTML:n escapointiin, styled components -komponentteihin, GraphQL-kyselyihin ja i18n-toteutuksiin. Yhteinen ajatus on käsitellä interpoloidut arvot turvallisesti.
function tag(s, ...v) { return s[0] + v[0] + s[1] }
console.log(tag(["<", ">"], "b"))Escapoinnin ongelma
Kun muodostatte HTML:ää käyttäjän syötteestä, erikoismerkit, kuten pienempi kuin -merkki, voivat lisätä joukkoon merkkausta. Tagifunktio voi escapata nämä merkit automaattisesti vain interpoloiduista arvoista.
const danger = "<script>"
console.log("raw: " + danger)Escape-apufunktio
Määrittelemme ensin apufunktion, joka korvaa vaaralliset merkit turvallisilla HTML-entiteeteillä.
function escapeHtml(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
}
console.log(escapeHtml("<b>"))Turvallinen HTML-tagi
Rakennamme nyt tagin, joka escapaa jokaisen interpoloidun arvon mutta jättää staattiset mallineen osat ennalleen, koska ne ovat peräisin luotetulta kehittäjältä.
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>"))Miksi staattiset osat säilyvät käsittelemättöminä
Vain interpoloidut arvot ovat epäluotettavaa käyttäjän dataa. Kehittäjä kirjoittaa mallineen literaaliosat itse, joten niitä ei escapata ja tarkoitettu merkkaus toimii oikein.
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>"))Muotoillun tulosteen tagi
Toinen toimintamalli ympäröi interpoloidut arvot muotoilumerkeillä, esimerkiksi raportin lukujen korostamiseksi.
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))Kyselymerkkijonojen muodostaminen
Tageilla voidaan koodata URL-osoitteiden arvoja escapaten jokaisen interpoloidun osan, jolloin staattinen rakenne säilyy ehjänä ja data koodataan turvallisesti.
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"))Monikkomuotojen käsittely
Tagi voi tutkia arvoa ja muuttaa ympäröivää tekstiä, esimerkiksi valita yksikkö- tai monikkomuodon.
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))Sisennyksen poistaminen
Tagit voivat siistiä monirivisiä mallineita poistamalla jokaisen rivin alusta ylimääräisen sisennyksen ja tuottamalla siistin tulosteen.
function dedent(strings) {
return strings[0].split("\n").map(function (l) { return l.trim() }).join("\n")
}
console.log(dedent([" a\n b\n c"]))Tagien yhdistäminen
Toimintaa voidaan rakentaa kerroksittain antamalla yhden tagin kutsua apufunktioita. Tässä tagi sekä ympäröi arvot että korostaa ne.
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"))Milloin tageja ei kannata käyttää
Yksinkertaisille merkkijonoille tavallinen template-literaali riittää. Käyttäkää tagifunktiota vain, kun interpoloiduille arvoille tarvitaan yhdenmukainen muunnos, kuten escapointi tai lokalisointi.
const name = "Lee"
console.log("Welcome, " + name)Pikatesti
Testatkaa käytännön tagitietonne.
Kertaus
Kertaus: Tagitetut template-literaalit mahdollistavat turvallisen ja muotoillun tulosteen.
- Escapatkaa HTML-turvallisuuden varmistamiseksi vain interpoloidut arvot
- Staattiset osat säilyvät luotettuina ja käsittelemättöminä
- Käyttäkää tageja muotoiluun, koodaukseen ja monikkomuotojen käsittelyyn
- Suosikaa tavallisia literaaleja, kun muunnosta ei tarvita
function safe(s, v) { return s[0] + String(v).replace(/</g, "<") }
console.log(safe(["x="], "<a>"))Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 59
- Oppitunnit
- 200
Usein kysytyt kysymykset
Onko oppitunti ”Tagitettujen templatejen käytännön käyttötapaukset” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa JavaScript Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tagitettujen templatejen käytännön käyttötapaukset”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. JavaScript Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tagitettujen templatejen käytännön käyttötapaukset”?
Rakentakaa turvallista HTML:ää ja tyyliteltyjä merkkijonoja tagien avulla. Harjoittelet JavaScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni JavaScript Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin JavaScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Tagitettujen templatejen käytännön käyttötapaukset”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä JavaScript Academy-oppitunnilla?
Kyllä. Jokainen JavaScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Merkkijonojen interpoloinnin perusteet
- Moniriviset merkkijonot
- Tagitetut template-funktiot
- Tagitettujen templatejen käytännön käyttötapaukset