Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ šablonų literatus (šablonų eilutes).
Šabloniniai literalai (šablonų eilutės) leidžia naudoti eilutes arba įdėtas išraiškas eilutės pavidalu. Jie yra uždaryti užpakaliuose ``
. Pavyzdžiui,
const name = 'Jack'; console.log(`Hello $(name)!`); // Hello Jack!
Pastaba : Šablono literalas buvo pristatytas 2015 m. (Taip pat žinomas kaip ECMAScript 6 arba ES6 arba ECMAScript 2015). Kai kurios naršyklės gali nepalaikyti šabloninių literatų naudojimo. Norėdami sužinoti daugiau, apsilankykite „JavaScript Template Literal“ palaikymo tarnyboje.
Šabloniniai literatai stygoms
Ankstesnėse „JavaScript“ versijose eilutėms naudosite vieną ''
arba dvigubą citatą ""
. Pavyzdžiui,
const str1 = 'This is a string'; // cannot use the same quotes const str2 = 'A "quote" inside a string'; // valid code const str3 = 'A 'quote' inside a string'; // Error const str4 = "Another 'quote' inside a string"; // valid code const str5 = "Another "quote" inside a string"; // Error
Norėdami naudoti tas pačias citatas eilutės viduje, galite naudoti pabėgimo simbolį .
// escape characters using const str3 = 'A \'quote\' inside a string'; // valid code const str5 = "Another "quote " inside a string"; // valid code
Užuot naudoję pabėgimo simbolius, galite naudoti šablonų literalus. Pavyzdžiui,
const str1 = `This is a string`; const str2 = `This is a string with a 'quote' in it`; const str3 = `This is a string with a "double quote" in it`;
Kaip matote, šabloniniai literalai ne tik leidžia lengvai įtraukti citatas, bet ir daro mūsų kodą švaresnį.
Daugialypės eilutės naudojant šabloninius literalus
Šabloniniai literalai taip pat palengvina kelių eilučių rašymą. Pavyzdžiui,
Naudodami šablonų literalus, galite juos pakeisti
// using the + operator const message1 = 'This is a long message' + 'that spans across multiple lines' + 'in the code.' console.log(message1)
su
const message1 = `This is a long message that spans across multiple lines in the code.` console.log(message1)
Abiejų šių programų išvestis bus ta pati.
Tai ilgas pranešimas, apimantis kelias kodo eilutes.
Išraiškos interpoliacija
Prieš „JavaScript ES6“ turėtumėte naudoti +
operatorių, kad susietumėte kintamuosius ir išraiškas eilutėje. Pavyzdžiui,
const name = 'Jack'; console.log('Hello ' + name); // Hello Jack
Naudojant šablonų literalus, šiek tiek lengviau į eilutę įtraukti kintamuosius ir posakius. Tam mes naudojame $(… )
sintaksę.
const name = 'Jack'; console.log(`Hello $(name)`); // template literals used with expressions const result = `The sum of 4 + 5 is $(4 + 5)`; console.log(result); console.log(`$(result < 10 ? 'Too low': 'Very high')`)
Rezultatas
Sveikas Džekas 4 + 5 suma yra 9 labai didelė
Kintamųjų ir išraiškų priskyrimo procesas šablono literate yra žinomas kaip interpoliacija.
Pažymėti šablonai
Paprastai argumentams perduoti naudosite funkciją. Pavyzdžiui,
function tagExample(strings) ( return strings; ) // passing argument const result = tagExample('Hello Jack'); console.log(result);
Tačiau galite sukurti pažymėtus šablonus (kurie elgiasi kaip funkcija) naudodami šablonų literalus. Naudojate žymas, leidžiančias išanalizuoti šablonų literalus su funkcija.
Pažymėtas šablonas rašomas kaip funkcijos apibrėžimas. Tačiau jūs nelaikote skliaustų, ()
kai skambinate pažodžiui. Pavyzdžiui,
function tagExample(strings) ( return strings; ) // creating tagged template const result = tagExample`Hello Jack`; console.log(result);
Rezultatas
(„Labas Džekas“)
Eilutės reikšmių masyvas perduodamas kaip pirmasis žymos funkcijos argumentas. Taip pat vertes ir išraiškas galite perduoti kaip likusius argumentus. Pavyzdžiui,
const name = 'Jack'; const greet = true; function tagExample(strings, nameValue) ( let str0 = strings(0); // Hello let str1 = strings(1); // , How are you? if(greet) ( return `$(str0)$(nameValue)$(str1)`; ) ) // creating tagged literal // passing argument name const result = tagExample`Hello $(name), How are you?`; console.log(result);
Rezultatas
Sveikas Džekai, kaip tu?
Tokiu būdu pažymėtoje temaplate taip pat galite perduoti kelis argumentus.