Како користити ЕС6 Темплате Литералс у ЈаваСцрипту
У програмирању, термин “литерал” односи се на нотација вредности у коду. На пример, нотирамо вредност низа са а стринг литерал које су знакови у двоструким или појединачним наводницима ("фоо"
, 'бар'
, "Ово је стринг!"
).
Темплате литералс су уведене у ЕЦМАСцрипт 6. Они раде врло слично као стринг литерали; они производе шаблонске вредности и сирове вредности шаблона, обоје су жице.
Међутим, за разлику од стринг литерала, литерали шаблона могу да производе вредности које су мулти-линед стрингс, нешто што можете постићи у литералном низу само преко додавање нових знакова реда (н
) на њега.
Могу се користити и литерали шаблона правите низове са другим вредностима (изведено из израза) за које бисте морали користити плус оператор у литералном низу ("ваш ид је:" + идНо
; где ИД број
је променљиви израз са нумеричком вредношћу).
Све ове карактеристике чине предложке литературама пожељнијим креирајте вредности низа.
Синтакса литерала шаблона
Раздвојник литералног обрасца је бацктицк '
карактер (такође је познато као знак бацккуоте или симбол наглашеног наглашавања). Израз унутар литерала (чија је вредност процењено током рунтиме-а и укључени у коначну вредност коју је произвео литерал) се налази у цурли брацес са претходни знак за долар
$
.
'стринг $ сомеЕкпрессион још стринг'
Ево неких примери литералног обрасца производњу непромијењен, супституисан (изрази замијењени њиховим вреднованим вриједностима), и мулти-линед стрингс.
цонсоле.лог ('хелло'); // хелло вар наме = "Јоан"; цонсоле.лог ('хелло $ наме'); // хелло Јоан цонсоле.лог ('Драги Јоан, Добродошли.'); // Драги Јоан, // Добродошли.
Избегавање и основне вредности шаблона
У литератури шаблона, '
(бацктицк), \ Т
(обрнута коса црта), и $
знакови за долар треба да побегне помоћу бекство \ Т
ако их треба укључити у њихову вриједност шаблона.
По дефаулту, све излазне секвенце у литератури шаблона су игнорисан. Ако желите да је укључите у излаз, потребно је да га користите рав темплате темплате.
цонсоле.лог ('инлине цоде ин маркуп:' цоде '); // инлине код у маркупу:' цоде 'вар наме = "Јоан"; цонсоле.лог (' хелло наме. '); / / хелло $ наме. цонсоле.лог (Стринг.рав'хелло $ наме. '); // хелло \ т.
Тхе Стринг.рав
метода даје излазне вредности шаблона (необрађена форма литералног обрасца). У горњем коду, позив функције рав
метода се назива “таггед темплате”.
Таггед темплатес
Означени предложак је а позив функције где, уместо уобичајених заграда (са опционалним параметрима) поред имена функције, постоји литературни предложак из које функција добија аргументе.
Дакле, уместо да позовете функцију као што је ова:
фоо (АргументсФорФоо);
Зове се овако:
фоо'АТемплатеСтрингПровидингАргументсФорФоо ';
Функција фоо
се зове а таг фунцтион. Његов први аргумент примљен од литералног обрасца је арраи назива темплате објецт.
Објект предлошка (низ) се држи све вредности низа интерпретира из литературног шаблона и има а рав
својство (други низ) који се држи све сирове (ун-есцапед) вредности стрингова тумачити из истог дословног.
Пратећи објекат шаблона, аргументи функције таг укључују све процењени екстерне вредности присутни у том дословном (они затворени у витичастим заградама $
).
У коду испод, фоо
креирана је функција изнијети своје аргументе. Функција се тада зове у модификованом шаблону, са литерарним обрасцем који садржи два израза (име
и ид
).
вар име = "Јохн"; вар ид = 478; фоо'хелло $ наме. ваш ИД је: $ ид. '; функција фоо () цонсоле.лог (аргументи [0]); // Арраи ["хелло", ". Ваш ИД је:", "." ] цонсоле.лог (аргументи [1]); // Јохн цонсоле.лог (аргументс [2]); // 478
Први излазни аргумент је темплате објецт носећи све низове интерпретиране из литералног обрасца, други и трећи аргумент су вредноване вредности израза, име
и ид
.
Тхе рав
својство
Као што је већ поменуто, објекат предлошка има а именом рав
који је низ који садржи све сирове (ун-есцапед) вредности стрингова интерпретира из литературног шаблона. Овако можете приступити рав
својство:
вар наме1 = "Јохн", наме2 = "Јоан"; фоо'хелло $ наме1, $ наме2, како сте обоје? '; функција фоо () цонсоле.лог (аргументи [0]); // Арраи ["хелло $ наме1,", ", како сте обоје?"] Цонсоле.лог (аргументи [0] .рав); // Арраи ["хелло \ _ наме1,", ", како сте обоје?"] Цонсоле.лог (аргументс [1]); // Јоан
Користите случајеве означених шаблона
Обележени шаблони су корисни када је потребно бреак а стринг у одвојеним деловима као што је то често случај у УРЛ-у, или док анализирате језик. Наћи ћете колекцију овде су означени примери предложака.
Осим ИЕ, литерални обрасци су подржан у свим већим прегледачима.
У наставку можете пронаћи неке примјере функција ознака са различите потписе који представљају аргументе:
вар име = "Јохн"; фоо'хелло $ наме, како сте обоје? '; бар'хелло $ наме, како сте обоје? '; функција фоо (… аргс) цонсоле.лог (аргс); // Арраи [Арраи ["хелло", "како сте обоје?"], "Јохн"] трака са функцијама (стрВалс,… екпрВалс) цонсоле.лог (стрВалс); // Арраи ["хелло", "како сте обоје?" ] цонсоле.лог (екпрВалс); // Арраи ["Јохн"]
Ин тхе бар
функција, први параметар (стрВалс
) је темплате објецт а други (који користи распрострањену синтаксу) је скуп који је сакупљен све вредноване вредности израза из литературног шаблона прослеђеног функцији.
Споји низ
Ако желиш да добити целу реченицу (изведено из дословног) унутар функције ознаке, спојите све вредности низова који носе низове шаблона и вредноване вредности израза. Овако:
фунцтион фоо (стрс,… екпрс) // ако има било каквих израза укључених у литерал иф (екпрс.ленгтх! == 0) вар н = стрс.ленгтх - 1, ресулт = "; фор (вар и = 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.';
Тхе стрс
арраи холд све жице пронађено у дословном и екпрс
држи све вредноване вредности израза из дословног.
Ако постоји чак и једна вредност израза, повежите сваку вредност поља стрс
(осим последње) са истим индексом вредности екпрс
. Затим, на крају, додајте последњу вредност стрс
низ у спојени низ, формирање потпуне реченице овуда.