Slik bruker du ES6 Template Literals i JavaScript
I programmeringen refererer begrepet "bokstavelig" til notasjonen av verdier i kode. For eksempel merker vi en strengverdi med en streng bokstavelig, som er tegn som er omsluttet i dobbelte eller enkle anførselstegn ( "foo"
, 'bar'
, "This is a string!"
).
Malte bokstaver ble introdusert i ECMAScript 6 . De jobber ganske likt med strengstavler; de produserer malverdier og råmalverdier, begge er strenger.
I motsetning til streng-bokstaver kan malte bokstaver imidlertid produsere verdier som er multi-linjede strenger, noe du bare kan oppnå i en streng, bare ved å legge til nye linjetegn ( \n
) til den.
Malte bokstaver kan også lage strenge med andre verdier (avledet av uttrykk) som du må bruke pluss operatøren i en streng bokstavelig ( "your id is:" + idNo
; hvor idNo
er et variabelt uttrykk med en numerisk verdi).
Alle disse funksjonene gjør maleriske bokstaver mer foretrukket for å skape strengverdier .
Syntaks av malte bokstaver
Avgrensningen av en mal bokstavlig er backtick `
karakter (også kjent som backquote karakter eller grave aksent symbol). Et uttrykk i det bokstavelige (verdien av disse er vurdert under kjøretid og inkludert i den endelige verdien som er produsert av bokstavelig) er innelukket i krøllete braces {}
med et foregående dollarskilt $
.
`streng $ {someExpression} strengere`
Her er noen eksempler på malte bokstaver som produserer uendret, erstattet (uttrykk erstattet med deres evaluerte verdier) og multi-linjede strenger.
console.log ( 'hello`); // hallo var navnet = "Joan"; console.log (`hallo $ {name}`); // hallo Joan console.log (`Kjære Joan, Welcome.`); // Kjære Joan, // Velkommen.
Unnslippe og rå malverdier
I en bokstavs bokstav, bør tegnene `
(backtick), \
(backslash) og $
(dollar sign)) unngås ved hjelp av escape-tegn \
hvis de skal inkluderes i deres malverdi.
Som standard ignoreres alle fluktsekvenser i en mal bokstavelig. Hvis du vil inkludere den i utgangen, må du bruke den raske malverdien .
console.log (`inline code in markup: \` kode \ ``); // inline kode i markup: `code` var name =" Joan "; console.log (`hello \ $ {name} .`); // hallo $ {name}. console.log (String.raw`hello \ $ {name} .`); // hallo \ $ {navn}.
String.raw
metoden gir String.raw
(den raske String.raw
av en mal bokstavelig). I ovennevnte kode refereres funksjonsanropet til den raw
metoden til "merket mal" .
Merkede maler
En merket mal er et funksjonsanrop der, i stedet for de vanlige parentesene (med valgfrie parametere) foruten funksjonsnavnet, er det en mal bokstavelig fra hvilken funksjonen får sine argumenter.
Så, i stedet for å kalle en funksjon som denne:
foo (ArgumentsForFoo);
Det kalles slik:
foo`ATemplateStringProvidingArgumentsForFoo`;
Funksjonen foo
kalles en tag-funksjon . Dens første argument mottatt fra malen bokstavelig er en matrise kalt malobjektet .
Malen objektet (en matrise) holder alle strengverdiene tolket fra malen bokstavelig og har en raw
egenskap (en annen matrise) som inneholder alle de raske (un-escaped) strengverdiene tolket fra samme bokstavelige.
Etter malingsobjektet inneholder argumentene til tag-funksjonen alle de evaluerte eksterne verdiene som er tilstede i den bokstavlige (de som følger med de krøllete båndene ${}
).
I koden nedenfor er foo
funksjonen opprettet for å utføre sine argumenter . Funksjonen kalles da i den merkede malemoden, med en mal bokstavelig bære to uttrykk ( name
og id
).
var navnet = "john"; var id = 478; foo`hello $ {name}. ditt id er: $ {id} .`; funksjon foo () {console.log (argumenter [0]); // Array ["hei", ". Ditt id er:", "." ] console.log (argumenter [1]); // John console.log (argumenter [2]); // 478}
Det første argumentet utgitt er malobjektet som bærer alle strengene som tolkes fra malen bokstavelig, det andre og tredje argumentet er de evaluerte verdiene av uttrykkene, name
og id
.
Den raw
eiendommen
Som nevnt tidligere har malobjektet en egenskap som kalles raw
som er en matrise som inneholder alle de raske (un-escaped) strengverdiene som er tolket fra malen bokstavelig. Slik får du tilgang til den raw
eiendommen:
var name1 = "John", name2 = "Joan"; foo`hello \ $ {name1}, $ {name2}, hvordan har du det begge? `; funksjon foo () {console.log (argumenter [0]); // Array ["hei $ {name1}, ", ", hvordan har du begge?"] Console.log (argumenter [0] .raw); // Array ["hei \ $ {name1}, ", ", hvordan har du begge?"] Console.log (argumenter [1]); // Joan}
Bruk tilfeller av merkede maler
Merkede maler er nyttige når du må kutte en streng i separate deler som det ofte er tilfellet i en nettadresse, eller mens du analyserer et språk. Du finner en samling av merkede maleksempler her .
Annet enn IE støttes malte bokstaver i alle de store nettleserne .
Nedenfor finner du noen eksempler på tagfunksjoner med forskjellige signaturer som representerer argumentene:
var navnet = "john"; foo`hello $ {name}, hvordan går det med dere begge? `; bar'hello $ {name}, hvordan går det med dere begge? `; funksjon foo (... args) {console.log (args); // Array [Array ["hei", ", hvordan har du begge?"], "John"]} funksjonslinjen (strVals, ... exprVals) {console.log (strVals); // Array ["hei", "hvordan går det med dere begge?" ] console.log (exprVals); // Array ["John"]}
I bar
funksjonen er den første parameteren ( strVals
) mal-objektet, og den andre (som bruker spredningssyntaxen) er en matrise som samlet alle evaluerte uttrykkverdier fra malen bokstavelig passert til funksjonen.
Sett strengen sammen
Hvis du vil oppnå hele setningen (avledet fra bokstavelig) inne i tag-funksjonen, skal du sammenkoble alle verdier av arrays som bærer malstrengene og de evaluerte uttrykkverdiene. Som dette:
funksjon foo (strs, ... exprs) {// hvis det er noen uttrykk som er inkludert i bokstavlig hvis (eksprs.length! == 0) {var n = strs.length - 1, result = ''; for (var i = 0; i <n; i ++) {resultat + = strs [i] + exprs [i]; } resultat + = strs [n]; console.log (resultat); // "Hei John." } // hvis det ikke er noen uttrykk som er inkludert i den bokstavelige andre konsollen.log (strs [0]); } navn = 'john'; foo`Hello $ {name} .`;
strs
arrayet inneholder alle strengene som finnes i bokstavene, og exprs
inneholder alle de evaluerte exprs
fra det bokstavelige.
Hvis det til og med er en ekspressionsverdi, sammenkoble hver strs
av strs
(unntatt den siste) med samme indeksverdien av exprs
. Deretter til slutt legger du til den siste verdien av strs
arrayet til den strs
strengen, og danner en komplett setning på denne måten.
Sammenligne skrifttyper rett i nettleseren din med vende typisk
Hver designer trenger å vite litt om skrifttyper . De er byggesteinene av innhold, og de kan lage eller bryte en lesbar nettside.Med Flipping Typical web app kan du sammenligne alle skrifter installert på maskinen din for å se hvilke som passer best. Du kan skrive inn en hvilken som helst frase i toppboksen og se umiddelbare oppdateringer for alle de forskjellige skriftene. D
Nye versus nåværende kunder - som er viktigere?
Hvis du er en frilansdesigner som serverer et målmarked som ser ut til å krympe eller ikke gir deg nok forretninger, er det kanskje på tide å bytte opp kundebase. Dette kan gjøres på en rekke forskjellige måter, men innebærer vanligvis å ta en beslutning om å oppsøke nye kunder eller oppsvinge og styrke forholdet til kundene du allerede har. Vi går ov