Kuidas kasutada ES6 Template Literals JavaScriptis
Programmeerimisel mõiste “sõna otseses mõttes” viitab väärtuste märkimine koodis. Näiteks märgistame stringiga a string sõna otseses mõttes mis on tähemärgid kahekordse või ühekordse jutumärgiga"foo"
, "baar"
, "See on string!"
).
Template literals võeti kasutusele ECMAScript 6. Nad töötavad üsna sarnaselt stringikeelsetele; nad toodavad malli väärtused ja toores malli väärtused, mõlemad on stringid.
Erinevalt stringiteadlastest võivad malliteadlased luua väärtusi mitmekihilised stringid, midagi, mida saate stringilises sõnastikus saavutada ainult uute rea märkide lisamine (n
) sellele.
Samuti võivad olla ka mallid luua teiste väärtustega stringid (mis on tuletatud väljenditest), mille jaoks peaksite kasutama pluss operaator stringi sõnas ("Teie ID on:" + idNo
; kus idNo
on numbriline väärtus muutuva väljendiga).
Kõik need funktsioonid muudavad malli kirjakeeled eelistatavamaks luua stringide väärtusi.
Malli kirjandite süntaks
Malli grammatiline piiraja on backtick '
iseloomu (Tuntud ka kui backquote'i tähemärki või rasket rõhu sümbolit). Väljend sõna sees (mille väärtus on hindamise ajal ja mis sisaldub sõna otseses väärtuses) on lisatud lokkis traksid koos eelmise dollari märk
$
.
'string $ someExpression veel string
Siin on mõned näiteid matriitsikeelest tootmine muutmata, asendatud (väljendused asendatud nende hinnatud väärtustega) ja mitmekihiline stringid.
console.log ('tere'); // hello var name = "Joan"; console.log ('hello $ name'); // hello Joan console.log („Kallis Joan, Tere!”); // Lugupeetud Joan, // Tere tulemast.
Põgenevad & toores malli väärtused
Malli sõnas '
(backtick), \ T
(tagakülg) ja $
(dollari märk) tähemärki tuleks põgeneda kasutades põgenemise iseloom \ T
kui need sisalduvad nende malli väärtuses.
Vaikimisi on kõik mallilises sõnastikus olevad põgenemisjärjestused ignoreeritakse. Kui soovite selle väljundisse lisada, peate seda kasutama toores malli väärtus.
console.log ("inline kood märgistus: kood"); // inline kood märgistuses: 'code' var name = "Joan"; console.log ('hello $ name.); / / hello $ name. console.log (String.raw'hello $ name. '); // hello.
The String.raw
meetod väljundid toores malli väärtused (matriitsitähis). Ülaltoodud koodis on toores
meetodit nimetatakse “märgistatud malli”.
Märgistatud mallid
Märgistatud mall on a funktsioonikõne kus, tavaliste sulgude asemel (valikuliste parameetritega) peale funktsiooni nime, seal on matemaatiline mall millest funktsioon saab oma argumendid.
Nii et selle asemel, et kutsuda sellist funktsiooni:
foo (ArgumentsForFoo);
Seda nimetatakse selliseks:
foo'ATemplateStringProvidingArgumentsForFoo ';
Funktsioon foo
nimetatakse a sildi funktsioon. Tema esimene argument, mis on saadud malle kirjalikust sõnast, on massiivi nimega malli objekt.
Malliobjekt (massiiv) hoiab kõik stringi väärtused tõlgendatakse matemaatilisest ja on a toores
omandiõigus (teine massiiv) kõik toores (un-escaped) string väärtused tõlgendada samast sõnast.
Malliobjekti järgi sisaldavad märgendifunktsiooni argumendid kõik hinnata välised väärtused esinevad selles sõna otseses mõttes (need, mis on suletud lokkis $
).
Allolevas koodis on foo
funktsioon on loodud esitama oma argumendid. Seejärel nimetatakse funktsiooni märgistatud malli moel, koos matemaatilise sõnaga, millel on kaks väljendit (nimi
ja id
).
var name = "John"; var id = 478; foo'hello $ name. teie ID on: $ id. '; function foo () console.log (argumendid [0]); // Array ["tere", ". Sinu id on:", "." ] console.log (argumendid [1]); // John console.log (argumendid [2]); // 478
Esimene argument on välja antud malli objekt teisel ja kolmandal argumendil on kõik malliteaduslikust tõlgitud stringid väärtused väljendeid, nimi
ja id
.
The toores
vara
Nagu eespool mainitud, on mallobjektil a kutsutud vara toores
mis on massiiv, mis sisaldab kõik toores (un-escaped) string väärtused tõlgendada mallist sõna otseses mõttes. Nii pääsete juurde toores
vara:
var name1 = "John", nimi2 = "Joan"; foo'hello $ name1, $ name2, kuidas sa mõlemad oled? '; function foo () console.log (argumendid [0]); // Array ["hello $ name1,", ", kuidas sa oled mõlemad?"] Console.log (argumendid [0] .raw); // Array ["hello $ name1,", ", kuidas sa oled mõlemad?"] Console.log (argumendid [1]); // Joan
Kasutage märgistatud mallide juhtumeid
Märgistatud mallid on kasulikud murda string erinevates osades, näiteks URL-is, või keele parsimise ajal. Leiad kogu siin märgistatud malli näited.
Muud kui IE, on mallitähed kõikides suuremates brauserites.
Allpool on mõned märgendifunktsioonide näited erinevad allkirjad mis esindavad argumente:
var name = "John"; foo'hello $ name, kuidas sa mõlemad oled? '; bar'hello $ name, kuidas sa mõlemad oled? '; funktsioon foo (… args) console.log (args); // Array [Array ["hello", ", kuidas sa nii?"], "John"] funktsiooniriba (strVals,… exprVals) console.log (strVals); // Array ["tere", ", kuidas sa mõlemad oled?" ] console.log (exprVals); // Array ["John"]
In baar
funktsioon, esimene parameeter (strVals
) on malli objekt ja teine (mis kasutab levinud süntaksit) on kogutud massiiv kõik hinnatud ekspressiooniväärtused funktsioonile edastatud malli sõnast.
Pange string koos
Kui sa tahad saada kogu lause (tuletatud sõnastikust) sildifunktsiooni sees, koondama kõik väärtused matriitside ja hinnanguliste ekspressiooniväärtuste hulgast. Nagu nii:
funktsiooni foo (strs,… exprs) // kui sõnastikus on mõningaid väljendeid, kui (exprs.length! == 0) var n = strs.length - 1, tulemus = "; jaoks (var i = 0 i < n; i++) result += strs[i] + exprs[i]; result += strs[n]; console.log(result); //"Hello John." // if there are no expressions included in the literal else console.log(strs[0]); name = 'John'; foo'Hello $name.';
The strs
massiiv hoiab kõik stringid leidub sõna otseses mõttes ja exprs
hoiab kõik hinnatud ekspressiooniväärtused sõna otseses mõttes.
Kui eksisteerib isegi üks väljendusväärtus, ühendage iga massiivi väärtus strs
(välja arvatud viimane) sama indeksiga exprs
. Seejärel lisage lõpus viimane väärtus strs
massiivi sidestatud stringile, moodustades täieliku lause nii.