Pagina principala » Codificare » Cum se utilizează literele de șablon ES6 în JavaScript

    Cum se utilizează literele de șablon ES6 în JavaScript

    În programare, termenul “literal” se referă la notarea valorilor în cod. De exemplu, notăm o valoare de șir cu a string literal care sunt caractere închise în ghilimele duble sau simple ("Foo", 'bar', "Acesta este un șir!").

    Template literals au fost introduse în ECMAScript 6. Acestea funcționează destul de asemănător cu literalul de șir; ei produc valorile șablonului și valorile șablonului brut, ambele fiind șiruri de caractere.

    Cu toate acestea, spre deosebire de literalul de șir, literalul șablonului poate produce valori care sunt corzi multi-căptușite, ceva ce puteți obține într-un literal șir numai prin adăugarea de caractere noi (\ n) la ea.

    Șabloanele literale pot, de asemenea creați șiruri de caractere cu alte valori (derivate din expresii) pentru care ar trebui să utilizați plus operator într-un literal șir ("ID-ul dvs. este:" + idNo; Unde nu stiu este o expresie variabilă cu o valoare numerică).

    Toate aceste caracteristici fac ca literalul șablonului să fie mai preferat creați valorile șirului.

    Sintaxa literalurilor de șabloane

    Delimitatorul unui literal șablon este backtick ' caracter (de asemenea, știu ca caracter retrovoc sau simbol accent grav). O expresie în literal (a cărei valoare este evaluat în timpul execuției și inclusă în valoarea finală produsă de literal) este inclusă în acolade cu precedent semn de dolar $.

     'string $ someExpression mai multe șir de caractere' 

    Aici sunt câteva exemple de literali șablon producând neschimbat, substituit (expresii înlocuite cu valorile evaluate) și multi-căptușită siruri de caractere.

     console.log ( 'bună'); // hello var nume = "Joan"; console.log ('salut $ name'); // hello Joan console.log ("Dragă Joan, Bun venit"); // Dragă Joan, // Bine ai venit. 

    Escaping & valoroase șablon valori

    Într - un literal șablon, ' (Backtick), \ (înapoi), și $ (semnul dolarului) ar trebui să fie scăpat folosind caracter de evacuare \ dacă acestea urmează să fie incluse în valoarea șablonului.

    În mod implicit, toate secvențele de evacuare dintr-un șablon literal sunt ignorate. Dacă doriți să îl includeți în ieșire, trebuie să îl utilizați valoarea șablonului brut.

     console.log ('cod inline in markup: \' code \ "); // cod inline in marcare: 'code' var name =" Joan "; console.log ('hello \ $ name / hello $ name .console.log (String.raw'hello \ $ name.); // hello \ $ name. 

    String.raw metodă afișează valorile șablonului brut (formularul brut al unui șablon literal). În codul de mai sus, apelul funcției din brut metoda este menționată ca “etichetat șablon”.

    Taguri șabloane

    Un șablon etichetat este a apel Unde, în locul parantezelor obișnuite (cu parametri opționali) în afară de numele funcției, există un șablon literal din care funcția își are argumentele.

    Deci, în loc de a apela o funcție ca aceasta:

     foo (ArgumentsForFoo); 

    Se cheamă astfel:

     foo'ATemplateStringProvidingArgumentsForFoo "; 

    Functia foo este numit a tag-ul. Primul său argument primit din literalul șablon este un mulțime numit obiect șablon.

    Obiectul șablonului (un șir) se menține toate valorile șirului interpretată din literal șablon și are a brut proprietate (o altă matrice) pe care o deține toate valorile șirului brut (ne-scăpat) interpretate de la același literal.

    În urma obiectului șablon, argumentele funcției de tag includ toate evaluat valori externe prezente în acel literal (cele cuprinse în bretelele curl $ ).

    În codul de mai jos, foo este creată funcția să își exprime argumentele. Funcția este apoi apelată în stilul șablonului marcat, cu un literal șablon care poartă două expresii (Nume și id).

     var nume = "Ioan"; var id = 478; foo'hello $ name. ID-ul dvs. este: $ id. '; funcția foo () console.log (argumente [0]); // array ["hello", "idul tău este:", "." ] console.log (argumente [1]); // John console.log (argumente [2]); // 478 

    Primul argument rezultat este obiect șablon purtând toate șirurile interpretate din literal șablon, al doilea și al treilea argument sunt valorile evaluate a expresiilor, Nume și id.

    brut proprietate

    Așa cum am menționat mai sus, obiectul șablon are un a proprietatea numită brut care este o matrice care conține toate valorile șirului brut (ne-scăpat) interpretat de la literal. Acesta este modul în care puteți accesa brut proprietate:

     var nume1 = "Ioan", nume2 = "Joan"; foo'hello \ $ name1, $ name2, cum sunteți amândoi? '; funcția foo () console.log (argumente [0]); // Array ["hello $ name1", ", cum sunteți amândoi?"] Console.log (argumente [0] .raw); // Array ["hello \ $ name1", "," cum sunteți amândoi? "] Console.log (argumente [1]); // Joan 
    Utilizați cazuri de șabloane etichetate

    Șabloanele etichetate sunt utile atunci când este necesar rupe un șir în părți separate, cum ar fi adesea cazul într-o adresă URL sau în parsarea unei limbi. Veți găsi o colecție de ați marcat exemple de șablon aici.

    Altele decât IE, literele șablon sunt suportate în toate browserele importante.

    Mai jos, puteți găsi câteva exemple de funcții de etichete cu semnături diferite care reprezintă argumentele:

     var nume = "Ioan"; foo'hello $ name, cum ești amândoi? '; bar'hello $ name, cum sunteți amândoi? '; funcția foo (... args) console.log (args); // Array [Array ["hello", "how are you both?"], "John"] barul de funcții (strVals, ... exprVals) console.log (strVals); // Array ["hello", "cum sunteți amândoi?" ] console.log (exprVals); // Array ["John"] 

    În bar funcție, primul parametru (strVals) este obiect șablon iar cea de-a doua (care utilizează sintaxa răspândită) este o matrice care s-a adunat toate valorile expresiei evaluate din literalul șablon trecut la funcție.

    Puneți șirul împreună

    Dacă dorești obține întreaga sentință (derivat din literal) în interiorul funcției de tag, concatenarea tuturor valorilor a matricelor care poartă șirul șablonului și valorile expresiei evaluate. Asa:

     funcția foo (strs, ... exprs) // dacă există expresii incluse în literal dacă (exprs.length! == 0) var n = strs.length - 1, rezultat = "; pentru (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.'; 

    RTS array hold toate corzile găsite în literal și exprs deține toate valorile expresiei evaluate de la literal.

    Dacă există o singură valoare de expresie, concatenați fiecare valoare a matricei RTS (cu excepția ultimului) cu aceeași valoare a indexului exprs. Apoi, la sfârșit, adăugați ultima valoare a RTS matricei la șirul concatenat, formând o propoziție completă pe aici.