Рубрики
Без рубрики

ES6 Тежные шаблонные литералы

Sanket Meghani ES6 Tagged Teamplate Learalsyou, которые вас уже знакомы с шаблонами ES6 шаблона, которые позволяют строку интерполяции, как это: const; const message = `hello $ {name}!`; Console.log (сообщение); // Выход -> Hello Steve! ES6 также представила более продвинутую и мощную концепцию помеченных шаблонных литералов. A

Sanket Meghani

Вы уже можете быть знакомы с шаблонами ES6 Template, которые позволяют строку интерполяции, как это:

const name = 'Steve';const message = `Hello ${name}!`;
console.log(message); // Output -> Hello Steve!

ES6 также представила более продвинутую и мощную концепцию меченых шаблонных литералов. Тег – это функция, которая имеет возможность интерпретировать и обрабатывать шаблон. Это означает, что мы можем запустить строку шаблона через функцию и иметь больше контроля над тем, как шаблон преобразуется в строковое представление.

Метки – это просто нормальные функции, но полезны, они должны быть вызваны по-разному. В следующем примере показано, как тег определен и вызывается:

Тег должен быть вызван путем передачи шаблона литерала без использования кронштейнов, как показано в строке 9 выше.

Шаблон литерала передается на функцию тега как несколько параметров. Первый аргумент представляет собой строковый массив, содержащий строковые литералы из шаблона: первый элемент в массиве – строка, начиная с индекса 0 до первого интерполированного значения, второй элемент в массиве является строкой после первого интерполированного значения вверх-к следующей интерполяции и так далее до конца шаблона не достигнут.

Все интерполированные Выражения оцениваются и передаются в тег в качестве второго аргумента по подопечкам в порядке их возникновения. Тег может обрабатывать литералы и оценивали выражения для формирования возвращаемого значения.

Что делает его мощным?

Очевидный вопрос: как это более мощно, чем обычные шаблонные литералы?

Все интерполированные Выражения оцениваются и передаются в тег в качестве второго аргумента по подопечкам …

Это позволяет нам использовать выражения функций в виде интерполированных значений, которые можно назвать обратно. Давайте возьмем пример, чтобы сделать его более четким.

Когда интерполяция содержит экспрессию функции, она оценивается как нормальная строка в случае нормальных шаблонных литералов.

Например $ {(() => myфункция ()} оценивается как стри ng () => myfunc Тион ().

Хотя то же самое выражение оценивается как функция в случае помеченных графических литералов и тег может вызывать эту функцию. Как показано в примере, при вызове MyTag выражение {() => Myфункция ()} оценивается и передается как функция в f Parameter unc, который наш тег вызывал USI Ng Fun. C () на линии 9.

Заключение

Возможность тега использовать функциональные выражения как интерполяцию – вместе с его способностью интерпретировать шаблон, используя любую логику, которую он желает – делает его очень мощным. Его можно использовать для создания конкретного языка домена и открывает много возможностей для использования (или злоупотребления) меченых шаблонных литералов.

Тежные шаблонные литералы позволяют развивать библиотеки, такие как Стильные компоненты Отказ Пожалуйста, прокомментируйте ниже, если вы можете подумать о том, что все другие случаи использования могут быть включены путем помеченных шаблон литералов.

Оригинал: “https://www.freecodecamp.org/news/es6-tagged-template-literals-48a70ef3ed4d/”