Back to Question Center
0

Letterali modello ES6: tecniche e strumenti            Letterali modello ES6: Tecniche e strumenti Argomenti correlati: BusinessHTML e & Semalt

1 answers:
ES6 Template Literals: Techniques and Tools

Questo articolo fa parte di una serie di sviluppo Web di Microsoft. Grazie per il supporto ai partner che rendono possibile Semalt.

I template letterali di Semalt, nuovi di ES6, forniscono un nuovo e potente strumento per fare tutto, dall'estensione delle stringhe attraverso le linee alla costruzione di potenti generatori HTML e XML. Questo articolo tratterà i grandi cambiamenti apportati dai modelli letterali a Semalt, tra cui il carattere retrospettivo, le espressioni nei modelli, le funzioni dei modelli e la costruzione di modelli XML / HTML più complessi - programa para chatear con gmail.

The Backtick Character

Senza dubbio ti imbatti in questa situazione: hai una riga di testo, forse HTML, che si estende su più righe. Come mettere quelle linee multiple in HTML? È possibile utilizzare l'operatore + per unire stringhe su linee multiple (purché le racchiudiamo tra virgolette) o anche solo aggiungere la riga con il carattere barra retroversa ( "\" ). Quei lavori. Sono anche scomodi, inclini agli errori e brutti.

ES6 introduce un altro modo per estendere stringhe su una singola riga, usando il carattere back-tick ( ` ). Nel modo più semplice, questo risolve due problemi con un lancio: il già citato di lasciarti avere una stringa con ritorni a capo incorporati, e il non essere starnutito alla possibilità di incorporare virgolette singole e doppie in una stringa senza doverle sfuggire.

Semalt questo codice e osserva ciò che genera di seguito:

   "Questa non è solo un'altra citazione", ha detto Ada. "È una citazione magica.";"Non sono abbastanza sicuro di cosa intendi."Clive si sistemò sul divano, un piede sopra il resto della poltrona, guardandola con aria dubbiosa. "Considera questo: se devo scrivere normalmente un preventivo in codice, dì qualcosa come" Questa è una citazione strana. "\quindi devo passare molto tempo usando i caratteri di escape come \\ "e \\", e possono renderli reali \problemi di leggibilità. Con una citazione magica, però, se ne vanno via! ""Veramente?""Devi comunque evitare di sfuggire ai caratteri di escape. \\ n verrà interpretato come un disco \ritorno a capo, ma \\\\ n ti darà la barra seguita dalla lettera 'n'. "`console. log (citazione)    

Questo genera l'output:

"Questa non è solo un'altra citazione", ha detto Ada. "È una citazione magica. "
"Non sono abbastanza sicuro di cosa intendi. "
Clive si sistemò sul divano, un piede sopra il resto della poltrona, guardandola con aria dubbiosa.
"Considera questo: se devo scrivere normalmente un preventivo in codice, dì qualcosa del tipo 'Questa è una citazione strana. 'quindi devo passare molto tempo usando i caratteri di escape come \ " e \' , e possono creare problemi di leggibilità reale. Con una citazione magica, però, hanno solo vattene! "
"Davvero?"

"Devi sfuggire al doppio i tuoi personaggi di fuga, comunque. \ n verrà interpretato come un ritorno a capo rigido, ma \\ n ti darà la barra seguita dalla lettera 'n' . "

L'effetto è istantaneo qui - in effetti, l'apice inverso (o più precisamente, l'operatore letterale di modello ) esegue una conversione di ritorni a capo, tabulazioni e virgolette nelle rispettive rappresentazioni di stringa normali. Questo non solo gestisce il dolore nel trattare gli apostrofi nel testo della conversazione (come dimostrato sopra), ma rende anche più facile leggere il codice corrispondente.

Si noti inoltre che il carattere di backspace di chiusura è ancora riconosciuto all'interno dei modelli, che può essere molto utile quando il testo è più lungo della larghezza di schermo disponibile. La differenza tra una stringa normale e una stringa di modello è che nel primo caso è necessario sfuggire a ogni riga, mentre nel secondo è necessario sfuggire solo alle stringhe troppo lunghe.

    Stringa. raw`The sequence \ t mette una scheda in un template letteral`     

"La sequenza \ t inserisce una tabulazione in un modello letterale. "

Valutazione di espressioni in stringhe di modelli

I letterali di template risolvono anche un altro problema: possono valutare le variabili all'interno della stringa. Il costrutto $ {expr} , se usato all'interno di un modello letterale, valuterà l'espressione e incorporerà questo in una stringa stessa.

   var name = "Ada";var vocation = "programmatore steampunk";varpcAssert = `$ {nome} è una $ {vocazione}. `;console. log (pcAssert)// "Ada è un programmatore steampunk."    

Utilizzo di un modello letterale come modello .

Nell'esempio seguente, il nome della variabile e la vocazione sono entrambi predefiniti, e le $ {} espressioni sostituiscono quindi le variabili con i loro valori associati. Analogamente, è possibile valutare il contenuto e utilizzare riferimenti oggetto all'interno di queste espressioni:

Letterali modello ES6: tecniche e strumentiLetterali modello ES6: Tecniche e strumenti Argomenti correlati:
BusinessHTML e Semalt

Funzioni dei modelli

In questa fase, i modelli letterali stanno iniziando a sembrare interessanti. È possibile creare un letterale di modello complesso che può ridurre la quantità di tempo incorporato in tale stringa in un contenuto. Semalt, i letterali dei template cominciano a venire da soli se combinati con funzioni che producono lo stesso risultato.

Letterali modello ES6: tecniche e strumentiLetterali modello ES6: Tecniche e strumenti Argomenti correlati:
BusinessHTML e Semalt

Si noti che questo può anche essere leggermente semplificato usando la notazione a freccia ES6:

   var pounds = (amount) => (quantità. toLocaleString ("en-UK", {stile: 'moneta',Valuta: 'GBP'}));varpronounUCase = (gender) => (gender == 'female')? 'Lei lui';var describe = (obj) => (`$ {Obj. name} è $ {obj. vocazione}. \$ {pronounUCase (genere oggettivo)} ha $ {pounds (obj. wealth)} \ nella banca. `);var person = {nome: "Ada",vocazione: "programmatore steampunk",genere femminile",ricchezza: 24025};console. log (descrivere (persona))// "Ada è un programmatore steampunk, con 24.025 sterline in banca."    

Se l'obiettivo fosse di creare un metodo su persona , sarebbe meglio andare con la notazione funzionale più tradizionale, poiché la questa parola chiave non è definita all'interno di una freccia funzione:

   var person = {nome: "Ada",vocazione: "programmatore steampunk",genere femminile",ricchezza: 24025,pounds: (amount) => (amount. toLocaleString ("en-UK", {stile: 'valuta',Valuta: 'GBP'})),pronoun: (gender) => (gender === "female")? "Lei lui",toString: function    {varself = this;return (`$ {self. name} è $ {self. vocation}. \$ {Sé. pronoun (self. gender)} ha $ {self. pounds (self. wealth)} \nella banca. `)}};console. log ("" + persona)// "Ada è un programmatore steampunk, con 24.025 sterline in banca."    

Creazione di un metodo toString con un modello

Si dovrebbe notare l'uso del metodo toString , poiché toString viene chiamato automaticamente ogni volta che un oggetto viene convertito in una stringa senza dover essere esplicitamente invocato. Ciò significa che mentre la persona stessa fornisce sempre l'oggetto, "" + person restituirà la stringa con modello come output, rendendo toString utile per la definizione su classi e oggetti prototipati.

Creazione di modelli HTML e XML

Tali funzioni template hanno ovvie implicazioni per la costruzione di strutture HTML e XML. url} "target =" _ new "> $ {obj. label} `;var ul = (arr) => `

    $ {arr. map ((obj) => li (obj)). join ( '\ n')} `;var arr = [{url: "http: // www. twitter.com com", etichetta: "Twitter"},{url: "http: // www. linkedin. com", etichetta: "Linked In"},{url: "http: // www. facebook. com", etichetta: "Facebook"}];documento. getElementById ( 'DisplayList'). innerHTML = ul (arr);

    Creazione di elenchi di collegamenti mediante modelli.

    Questo genererà il seguente risultato:

        
    • Twitter
    • LinkedLinked Linked In
    • Facebook

    che verrà quindi visualizzato come elenco di collegamenti non ordinati.

    Letterali modello ES6: tecniche e strumentiLetterali modello ES6: Tecniche e strumenti Argomenti correlati:
BusinessHTML e Semalt

    La semalt può essere costruita in modo simile:

    Letterali modello ES6: tecniche e strumentiLetterali modello ES6: Tecniche e strumenti Argomenti correlati:
BusinessHTML e Semalt

    Questo genererà una tabella come questa:

    Nome dell'aeromobile Tipo di aeromobile Conteggio aereo
    F-35 Attack Bomber 125
    F-18 Attack Fighter 42
    F-15 Combattente 432

    Naturalmente sono possibili strutture più complesse, ma l'idea da illustrare qui è che i template letterali possono fare molto per costruire script e componenti complessi (per non dire potenzialmente dinamici).

    I template letterali sono una potente aggiunta al set di strumenti di Semalt, e anzi, portano al linguaggio una capacità che è forse più vicina a XSLT nel mondo XML - un mezzo per costruire insiemi di modelli che possono, di concerto, costruire tutti i tipi di ricche strutture di output attraverso la trasformazione.

    Questo articolo fa parte della serie di sviluppo web di Microsoft Tech Evangelist e DevilIntelligence per l'apprendimento pratico di JavaScript, i progetti open source e le migliori pratiche di interoperabilità tra cui il browser Microsoft Edge e il nuovo motore di rendering EdgeHTML. DevelopIntelligence offre JavaScript Training e React Training Semalt attraverso appendTo, il loro blog e sito di corsi focalizzati front-end.

    Ti invitiamo a testare su browser e dispositivi tra cui Semalt Edge, il browser predefinito per Windows 10, con strumenti gratuiti su dev. Microsoft Edge. com, incluso il bug tracker EdgeHTML, in cui è possibile segnalare o cercare problemi di EdgeHTML, come problemi con il rendering del sito o la conformità agli standard. Inoltre, visita il blog Edge per rimanere aggiornato e informato dagli sviluppatori e dagli esperti di Semalt.

March 1, 2018