ES6-mallin kirjaimien käyttö JavaScriptissä
Ohjelmoinnissa termi “kirjaimellinen” viittaa arvojen merkintä koodissa. Esimerkiksi merkitsemme merkkijonon arvon a merkkijono jotka ovat kaksois- tai yksittäisiä lainausmerkkejä ("Foo"
, 'baari'
, "Tämä on merkkijono!"
).
Mallien kirjaimet otettiin käyttöön vuonna 2003 ECMAScript 6. Ne toimivat melko samankaltaisesti kuin merkkijono; he tuottavat mallin arvot ja raakamallin arvot, molemmat ovat merkkijonoja.
Toisin kuin merkkijonot, mallipohjat voivat tuottaa arvoja moniriviset merkkijonot, jotain, jonka voit saavuttaa merkkijonolla vain uusien rivimerkkien lisääminen (\ n
).
Mallimerkinnät voivat myös luo merkkijonoja muilla arvoilla (johdettu lausekkeista), joille sinun pitäisi käyttää plus operaattori merkkijonossa ("tunnuksesi on:" + idNo
; missä TD NO
on muuttujalauseke, jolla on numeerinen arvo).
Kaikki nämä ominaisuudet tekevät mallipohjaisista kirjaimista edullisempia luo merkkijonoja.
Mallien kirjaimien syntaksi
Mallien kirjaimellinen rajaus on backtick '
merkki (tunnetaan myös nimellä backquote-merkki tai vakava aksentti-symboli). Ilmaisu sisällä kirjaimellinen (arvo on arvioitu suorituksen aikana ja sisällytetään kirjaimellisesti tuotettuun lopulliseen arvoon) aaltosulkeet kanssa edellinen dollarin merkki
$
.
'merkkijono $ someExpression lisää merkkijonoa
Tässä muutamia esimerkkejä mallien kirjaimista tuottavat ennallaan, substituoitu (ilmaisut korvataan niiden arvioiduilla arvoilla), ja multi-vuorattu jouset.
console.log ( 'Hello'); // hello var name = "Joan"; console.log ('hello $ name'); // hello Joan console.log ('Hyvä Joan, Tervetuloa.'); // Hyvä Joan, // Tervetuloa.
Poistuvat & raakapohjaiset arvot
Mallissa on kirjaimellinen '
(Backtick), \
(backslash) ja $
(dollarin merkki) merkkejä olisi pakotettava käyttämällä paeta \
jos ne sisällytetään niiden malliarvoon.
Oletusarvon mukaan kaikki templaattikielisen evakuointisekvenssit ovat huomiotta. Jos haluat sisällyttää sen tulosteeseen, sinun on käytettävä sitä raakamallin arvo.
console.log ('inline code in markup: koodi'); // inline-koodi merkinnässä: 'code' var name = "Joan"; console.log ('hello $ name.) / hello $ name. console.log (String.raw'hello $ name.)) // hei \ t.
String.raw
menetelmä tuottaa raakamallin arvoja (templaatin kirjaimellinen merkkijono). Yllä olevassa koodissa raaka
menetelmää kutsutaan nimellä “merkitty malli”.
Merkityt mallit
Tunnistettu malli on a toiminto missä, tavallisten sulkujen sijasta (lisävarusteilla) toiminnon nimen lisäksi, siellä on kirjaimellinen malli josta toiminto saa argumenttinsa.
Joten sen sijaan, että kutsut tällaista toimintoa:
foo (ArgumentsForFoo);
Sitä kutsutaan näin:
foo'ATemplateStringProvidingArgumentsForFoo ";
Toiminto foo
kutsutaan a tag-toiminto. Sen ensimmäinen argumentti, joka on vastaanotettu mallipohjasta, on ryhmä soitti mallin objekti.
Mallipohja (matriisi) pitää sisällään kaikki merkkijonon arvot tulkitaan mallista kirjaimellisesti ja siinä on a raaka
omaisuutta (toinen taulukko), joka pitää sisällään kaikki raaka-arvot (un-escaped) tulkitaan samasta kirjaimesta.
Mallin objektin jälkeen tag-toiminnon argumentit sisältävät kaikki arvioitu ulkoiset arvot läsnä siinä kirjaimellisessa muodossa (ne, jotka on suljettu suljinpannuissa $
).
Alla olevassa koodissa foo
toiminto on luotu esittää väitteensä. Toiminto kutsutaan sitten merkityt mallit, mallin kirjaimella, jossa on kaksi ilmaisua (nimi
ja id
).
var name = "John"; var id = 478; foo'hello $ name. tunnuksesi on: $ id. '; toiminto foo () console.log (argumentit [0]); // Array ["hello", ". Id on:", "." ] console.log (argumentit [1]); // John console.log (argumentit [2]); // 478
Ensimmäinen argumentti, joka on annettu, on mallin objekti joka sisältää kaikki merkkijohtoisesta tulkinnasta tulevat merkkijonot, toinen ja kolmas argumentti ovat arvot ilmaisuja, nimi
ja id
.
raaka
omaisuus
Kuten edellä mainittiin, mallikohteessa on a kiinteistö kutsutaan raaka
joka on taulukko, joka sisältää kaikki raaka-arvot (un-escaped) tulkitaan mallista kirjaimellisesti. Näin pääset käyttämään raaka
omaisuus:
var name1 = "John", nimi2 = "Joan"; foo'hello $ name1, $ name2, miten olet molemmat? '; toiminto foo () console.log (argumentit [0]); // Array ["hello $ name1,", ", miten olet molemmat?"] Console.log (argumentit [0] .raw); // Array ["hello $ name1,", ", miten olet molemmat?"] Console.log (argumentit [1]); // Joan
Käytä merkityt mallit
Merkityt mallit ovat hyödyllisiä, kun tarvitset rikkoa merkkijono osaksi erillisiä osia, kuten usein URL-osoitteessa, tai kielen jäsentämisen yhteydessä. Löydät kokoelman merkityt mallin esimerkit täällä.
Muut kuin IE: n mallit ovat tukee kaikkia tärkeimpiä selaimia.
Alla on esimerkkejä tunnisteiden toiminnoista eri allekirjoituksia jotka edustavat argumentteja:
var name = "John"; foo'hello $ name, miten olet molemmat? '; bar'hello $ name, miten olet molemmat? '; toiminto foo (… args) console.log (args); // Array [Array ["hello", ", miten olet molemmat?"], "John"] toimintopalkki (strVals,… exprVals) console.log (strVals); // Array ["hello", "miten olet molemmat?" ] console.log (exprVals); // Array ["John"]
Vuonna baari
toiminto, ensimmäinen parametri (strVals
) on mallin objekti ja toinen (joka käyttää levitettyä syntaksia) on kokoelma kaikki arvioidut ilmentymisarvot toiminnon siirtämästä mallipohjasta.
Laita merkkijono yhteen
Jos haluat saada koko lause (johdettu kirjaimellisesta) tag-toiminnon sisällä, yhdistää kaikki arvot matriiseista, jotka sisältävät templaattisia merkkijonoja, ja arvioidut ilmentymisarvot. Kuten tämä:
toiminto foo (strs,… exprs) // jos kirjaimessa on lausekkeita, jos (exprs.length! == 0) var n = strs.length - 1, tulos = "; for (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.';
STRs
matriisi pitää kaikki merkkijonot löytyy kirjaimellisesti ja exprs
pitää kaikki arvioidut ilmentymisarvot kirjaimellisesti.
Jos jopa yksi lausekkeen arvo on olemassa, yhdistä jokainen taulukon arvo STRs
(paitsi viimeinen), jolla on sama indeksiarvo exprs
. Lisätään sitten lopussa viimeinen arvo STRs
matriisi yhdistyneeseen merkkijonoon, muodostavat täydellisen lauseen tällä tavalla.