Πώς να χρησιμοποιήσετε το ES6 Λέιζερ πρότυπο στο JavaScript
Στον προγραμματισμό, ο όρος “κατά γράμμα” αναφέρεται στο σημειώσεις αξιών σε κώδικα. Για παράδειγμα, σημειώνουμε μια τιμή συμβολοσειράς με a string literal που είναι χαρακτήρες που περικλείονται σε διπλά ή μοναδικά εισαγωγικά ("foo"
, 'μπαρ'
, "Αυτή είναι μια συμβολοσειρά!"
).
Πρότυπα κυριολεκτικά εισήχθησαν στο ECMAScript 6. Λειτουργούν αρκετά παρόμοια με τους κυριολεκτικούς κορμούς. παράγουν τιμές προτύπου και πρώτες τιμές προτύπου, και οι δύο είναι χορδές.
Ωστόσο, αντίθετα με τους κυριολεκτικούς συμβολοσειρές, τα κυριολεκτικά πρότυπα μπορούν να παράγουν τιμές που είναι πολύχρωμες χορδές, κάτι που μπορείτε να επιτύχετε σε μια συμβολοσειρά μόνο μετά από προσθέτοντας νέους χαρακτήρες γραμμής (\ n
) σε αυτό.
Μπορούν επίσης να χρησιμοποιηθούν και τα πρότυπα Δημιουργήστε χορδές με άλλες τιμές (που προέρχονται από εκφράσεις) για τις οποίες θα πρέπει να χρησιμοποιήσετε το συν χειριστή σε μια κυριολεκτική συμβολοσειρά ("το αναγνωριστικό σας είναι:" + idNo
. όπου αριθμός ταυτότητας
είναι μια μεταβλητή έκφραση με αριθμητική τιμή).
Όλα αυτά τα χαρακτηριστικά καθιστούν τα πρότυπα κυριολεκτικά πιο προτιμότερα από να δημιουργήσετε τιμές συμβολοσειρών.
Σύνταξη λυμάτων πρότυπων
Ο διαχωριστής ενός κυριολεκτικού προτύπου είναι ο backtick '
χαρακτήρας (επίσης γνωστό ως χαρακτήρας backquote ή σύμβολο έντονου τόνου). Μια έκφραση μέσα στο κυριολεκτικό (η αξία του οποίου είναι αξιολόγηση κατά τη διάρκεια του χρόνου εκτέλεσης και περιλαμβάνεται στην τελική τιμή που παράγεται από την κυριολεκτική) άγκιστρα με προηγούμενο σύμβολο του δολαρίου
$
.
'string $ someExpression περισσότερο string'
Εδω είναι μερικά παραδείγματα κυριολεκτικών προτύπων παραγωγή αμετάβλητος, αντικατασταθεί (οι εκφράσεις αντικαθίστανται από τις εκτιμώμενες τιμές τους), και πολυεπίπεδη χορδές.
console.log ('γεια'); // hello var όνομα = "Joan"; console.log ('hello $ όνομα'); // hello Joan console.log ('Αγαπητέ Joan, Καλώς ήρθατε'); // Αγαπητέ Joan, // Καλώς ορίσατε.
Εξαφανισμένες & πρώτες τιμές προτύπου
Σε ένα πρότυπο κυριολεκτικά, το '
(backtick), \
(αντίστροφη κάθετος), και $
(σημάδι δολαρίου) πρέπει να διαφεύγουν χρησιμοποιώντας το χαρακτήρα διαφυγής \
εάν πρόκειται να συμπεριληφθούν στην τιμή του προτύπου τους.
Από προεπιλογή, όλες οι ακολουθίες διαφυγής σε ένα πρότυπο κυριολεκτικά είναι αγνοήθηκε. Αν θέλετε να το συμπεριλάβετε στην έξοδο, πρέπει να χρησιμοποιήσετε το τιμή ακατέργαστου προτύπου.
console.log ('inline code in markup: \' code \ "); // κωδικός εισόδου στο markup: 'κωδικός' var όνομα =" Joan ", console.log ('hello \ $ name / hello $ name .console.log (String.raw'hello \ $ name.); // hello \ $ name.
ο String.raw
μέθοδος εξάγει τις τιμές των πρώτων προτύπων (η ακατέργαστη μορφή στοιχειοσειράς ενός κυριολεκτικού προτύπου). Στον παραπάνω κώδικα, η κλήση λειτουργίας του ακατέργαστος
η μέθοδος αναφέρεται ως “ετικέτα με πρότυπο”.
Τα πρότυπα με ετικέτες
Ένα πρότυπο με ετικέτα είναι a κλήση λειτουργίας όπου, αντί των συνηθισμένων παρενθέσεων (με προαιρετικές παραμέτρους) εκτός από το όνομα της λειτουργίας, υπάρχει ένα πρότυπο κυριολεκτικά από την οποία η συνάρτηση παίρνει τα επιχειρήματά της.
Έτσι, αντί να καλέσετε μια λειτουργία όπως αυτή:
foo (ArgumentsForFoo);
Ονομάζεται έτσι:
foo'TemplateStringProvidingArgumentsForFoo ';
Η λειτουργία foo
ονομάζεται a ετικέτα. Το πρώτο επιχείρημα που έλαβε από το κυριολεκτικό πρότυπο είναι ένα παράταξη ονομάζεται πρότυπο αντικείμενο.
Το αντικείμενο προτύπου (ένας πίνακας) διατηρεί όλες τις τιμές των συμβολοσειρών ερμηνεύεται από το πρότυπο κυριολεκτικά και έχει α ακατέργαστος
ιδιότητα (άλλη συστοιχία) που κατέχει όλες τις ακατέργαστες (μη εξερχόμενες) τιμές συμβολοσειράς ερμηνεύονται από την ίδια λέξη.
Μετά το αντικείμενο πρότυπο, τα επιχειρήματα της λειτουργίας ετικέτας περιλαμβάνουν Ολα τα αξιολόγηση εξωτερικές τιμές που είναι παρόντες σε αυτό το κυριολεκτικό (αυτά που περικλείονται στα σγουράκια $
).
Στον παρακάτω κώδικα, το foo
συνάρτηση δημιουργείται για να εξάγει τα επιχειρήματά της. Στη συνέχεια ονομάζεται η λειτουργία στο πρότυπο με ετικέτες με ετικέτα, με ένα πρότυπο κυριολεκτικό που φέρει δύο εκφράσεις (όνομα
και ταυτότητα
).
όνομα var = "John"; var id = 478; foo'hello $ όνομα. το αναγνωριστικό σας είναι: $ id. '; συνάρτηση foo () console.log (επιχειρήματα [0]); // Array ["hello", "" το αναγνωριστικό σας είναι: ",". " ] console.log (επιχειρήματα [1]); // John console.log (επιχειρήματα [2]); // 478
Το πρώτο παράγωγο όρισμα είναι το πρότυπο αντικείμενο μεταφέροντας όλες τις συμβολοσειρές που ερμηνεύονται από το πρότυπο κυριολεκτικά, το δεύτερο και το τρίτο είναι τα αξιολογημένες τιμές των εκφράσεων, όνομα
και ταυτότητα
.
ο ακατέργαστος
ιδιοκτησία
Όπως αναφέρθηκε προηγουμένως, το αντικείμενο πρότυπο έχει ένα ιδιοκτησία που ονομάζεται ακατέργαστος
που είναι ένας πίνακας που περιέχει όλες τις ακατέργαστες (μη εξερχόμενες) τιμές συμβολοσειράς ερμηνεύονται από το πρότυπο κυριολεκτικά. Έτσι μπορείτε να αποκτήσετε πρόσβαση στο ακατέργαστος
ιδιοκτησία:
όνομα var1 = "John", όνομα2 = "Joan"; foo'hello \ $ name1, $ name2, πώς είστε και οι δύο; '; συνάρτηση foo () console.log (επιχειρήματα [0]); // Array ["hello $ name1", ", πώς είστε και οι δύο;"] console.log (παράμετροι [0] .raw); // Array ["hello \ $ name1", ", πώς είστε και οι δύο;"] console.log (επιχειρήματα [1]); // Joan
Χρησιμοποιήστε περιπτώσεις υποδειγμάτων με ετικέτα
Τα πρότυπα με ετικέτες είναι χρήσιμα όταν χρειάζεστε σπάσει μια συμβολοσειρά σε ξεχωριστά μέρη, όπως συμβαίνει συχνά σε μια διεύθυνση URL ή κατά την ανάλυση μιας γλώσσας. Θα βρείτε μια συλλογή από ετικέτες παραδείγματα προτύπων εδώ.
Εκτός από την IE, τα κυκλικά πρότυπα είναι υποστηρίζεται σε όλα τα μεγάλα προγράμματα περιήγησης.
Παρακάτω, μπορείτε να βρείτε μερικά παραδείγματα λειτουργιών ετικέτας με διαφορετικές υπογραφές που αντιπροσωπεύουν τα επιχειρήματα:
όνομα var = "John"; foo'hello $ name, πώς είστε και οι δύο; '; bar'hello $ name, πώς είστε και οι δύο; '; συνάρτηση foo (... args) console.log (args); // Array [Array ["hello", ", πώς είστε και οι δύο;"], "John"] γραμμή λειτουργιών (strVals, ... exprVals) console.log (strVals); // Array ["hello", "πώς είστε και οι δύο;" ] console.log (exprVals); // Αρχείο ["John"]
Στο μπαρ
, η πρώτη παράμετρος (strVals
) είναι το πρότυπο αντικείμενο και το δεύτερο (που χρησιμοποιεί τη σύνταξη εξαπλώσεως) είναι ένας πίνακας που συγκεντρώθηκε όλες τις εκτιμώμενες τιμές έκφρασης από το πρότυπο κυριολεκτικά πέρασε στη λειτουργία.
Βάλτε τη συμβολοσειρά μαζί
Αν θέλεις να πάρει ολόκληρη την ποινή (που προέρχεται από το κυριολεκτικό) μέσα στη λειτουργία ετικέτας, συγκολλήστε όλες τις τιμές των συστοιχιών που φέρουν τις σειρές προτύπων και τις εκτιμώμενες τιμές έκφρασης. Σαν αυτό:
(0) var n = strs.length - 1, result = "; για (var i = 0)). ; Εγώ < 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.';
ο στρ
ο πίνακας κρατάει όλες τις χορδές που βρέθηκαν στο κυριολεκτικό και exprs
κρατάει όλες τις εκτιμώμενες τιμές έκφρασης από το κυριολεκτικό.
Αν υπάρχει ακόμη και μία τιμή έκφρασης συγκολλήστε κάθε τιμή πίνακα στρ
(εκτός από την τελευταία) με την ίδια τιμή δείκτη του exprs
. Στη συνέχεια, στο τέλος, προσθέστε την τελευταία τιμή του στρ
στη συστοιχία, σχηματίζοντας μια πλήρη πρόταση με αυτόν τον τρόπο.