Back to Question Center
0

Литералы шаблонов ES6: методы и инструменты            Литералы шаблонов ES6: методы и инструментыРелируемые темы: BusinessHTML & Semalt

1 answers:
Линейки шаблонов ES6: методы и инструменты

Эта статья является частью серии веб-разработок от Microsoft. Благодарим вас за поддержку партнеров, которые делают Semalt возможным.

Литералы шаблонов Semalt, новые для ES6, предоставляют мощный новый инструмент для выполнения всего, от расширения строк по строкам до создания мощных генераторов HTML и XML. В этой статье будут рассмотрены большие изменения, которые шаблонные литералы привносят в Semalt, включая характер обратного хода, выражения в шаблонах, функции шаблонов и создание более сложных шаблонов XML / HTML.

Символ обратного хода

Вы, несомненно, столкнулись с такой ситуацией: у вас есть строка текста, может быть, HTML, которая простирается на несколько строк. Как поместить эти несколько строк в HTML? Можно использовать оператор + для объединения строк по кратным линиям (при условии, что они заключают их в кавычки) или даже просто добавить строку с символом обратной косой черты ( "\" ). Эти работы. Они также неудобны, склонны к ошибкам и уродливы.

ES6 вводит другой способ расширения строк в одной строке с использованием символа обратного тика ( ` ). В самом простом случае это решает две проблемы одним броском - вышеупомянутая одна из них позволяет вам иметь одну строку со встроенными возвратами каретки и не чихать при возможности включать как одиночные, так и двойные кавычки в строку без необходимости их избегать.

Считайте этот код и посмотрите, что он создает ниже:

   «Это не просто еще одна цитата, - сказала Ада. «Это волшебная цитата»;«Я не совсем понимаю, что вы имеете в виду».Клайв опустился на кушетку на одну ногу над креслом и осторожно посмотрел на нее. «Подумайте об этом - если мне нужно написать цитату в коде нормально, скажите что-то вроде« Это странная цитата ». \то я должен потратить много времени, используя escape-символы, такие как \\ "и \\ ', и они могут сделать для реального \проблемы разборчивости. Однако с волшебной цитатой они просто уходят! »"В самом деле?"«Однако вам нужно удвоить escape escape-символы. \\ n все равно будет интерпретироваться как жесткий \возврат каретки, но \\\\ n даст вам слэш, за которым следует буква «n». "`консоль. Журнал (цитата)    

Это генерирует выход:

«Это не просто еще одна цитата, - сказала Ада. «Это волшебная цитата. »
«Я не совсем понимаю, что вы имеете в виду. »
Клайв опустился на кушетку на одну ногу над креслом и осторожно посмотрел на нее.
«Подумайте об этом - если мне нужно написать цитату в коде нормально, скажите что-то вроде« Это странная цитата. «тогда я должен потратить много времени, используя escape-символы, такие как » и » , и они могут справляться с реальными проблемами разборчивости. Однако с магической цитатой они просто уходи! »
«Действительно?»

«Однако вам нужно удвоить бегство от ваших эвакуационных персонажей. \ n все равно будет интерпретироваться как возврат жесткой каретки, но \\ n даст вам слэш, за которым следует буква 'n' . "

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

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

    Строка. raw 'Последовательность \ t помещает вкладку в шаблонный литерал`     

«Последовательность \ t помещает вкладку в шаблонный литерал. "

Оценка выражений в шаблонных строках

Литералы шаблонов также решают другую проблему: они могут оценивать переменные внутри строки. Конструкция $ {expr} , используемая в шаблоне, будет оценивать выражение и включать его в строку.

   var name = "Ada";var vocation = "steampunk programmer";varpcAssert = `$ {name} - это $ {призвание}. `;консоль. войти (pcAssert)// «Ада - программист стимпанк».    

Использование шаблона в качестве шаблона .

В приведенном ниже примере имя переменной и призвание являются предопределенными, а выражения $ {} заменяют переменные соответствующими значениями. Аналогичным образом вы можете как оценить контент, так и использовать ссылки на объекты в этих выражениях:

Литералы шаблонов ES6: методы и инструментыЛитералы шаблонов ES6: методы и инструментыРелируемые темы:
BusinessHTML & Semalt
«/> <h2>  Функции шаблона  </h2>  <p>  На этом этапе шаблонные литералы начинают выглядеть интересными. Вы можете создать сложный литерал шаблона, который может уменьшить количество времени, заложенного таким контентом в строку. Semalt, шаблонные литералы начинают приходить в свои руки, когда они сочетаются с функциями, которые производят один и тот же вывод.  </p>  <p>  <img src = (gender == 'female')? «Она»: «Он»;var описать = (obj) => (`$ {OBJ. name} является $ {obj. Призвание}. \$ {pronounUCase (obj. gender)} имеет $ {фунты (obj. wealth)} \ в банке. `);var person = {имя: «Ада»,призвание: «программист стимпанк»,женский пол",богатство: 24025};консоль. журнал (опишите (человек))// «Ада - программист стимпанк, у нее в банке есть 24 025 000 долларов».

Если целью было сделать способ человека , вам было бы лучше перейти к более традиционным функциональным обозначениям, поскольку это ключевое слово не определено в стрелке функция:

   var person = {имя: «Ада»,призвание: «программист стимпанк»,женский пол",богатство: 24025,фунтов: (сумма) => (сумма toLocaleString ("en-UK", {стиль: «валюта»,Валюта: 'GBP'})),местоимение: (пол) => (пол === "женщина")? «Она»: «Он»,toString: function    {varself = this;return (`$ {self. name} - это $ {self. vocation}. \$ {Я. местоимение (сам. пол)} имеет $ {self. фунты (само богатство)} \в банке. `)}};консоль. log («+ человек»)// «Ада - программист стимпанк, у нее в банке есть 24 025 000 долларов».    

Создание метода toString с шаблоном

Следует использовать метод toString , поскольку toString автоматически вызывается всякий раз, когда объект преобразуется в строку без необходимости явно вызывать. Это означает, что хотя человек сам всегда будет давать объект, «+» вернет шаблонную строку в качестве вывода, делая toString полезной для определения на классов и прототипированных объектов.

Создание HTML и XML-шаблонов

Такие функции шаблона имеют очевидные последствия для построения структур HTML и XML. url} "target =" _ new "> $ {obj. label} `;var ul = (arr) => `

    $ {обр. map ((obj) => li (obj)). присоединиться ( '\ п')} `;var arr = [{url: "http: // www. twitter. com", label: "Twitter"},{url: "http: // www. linkedin. com", label: "Linked In"},{url: "http: // www. facebook. com", label: "Facebook"}];документ. getElementById ( 'DisplayList'). innerHTML = ul (arr);

    Создание списков ссылок с использованием шаблонов.

    Это будет генерировать следующий результат:

        
    • Twitter
    • LinkedLinked Linked In
    • Facebook

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

    Литералы шаблонов ES6: методы и инструментыЛитералы шаблонов ES6: методы и инструментыРелируемые темы:
BusinessHTML & Semalt
«/>  <p>  Semalt может быть построен аналогично:  </p>  <p>   <img src = Название воздушного судна Тип самолета Количество воздушных судов F-35 Атакующий бомбардировщик 125 F-18 Атакующий истребитель 42 F-15 Истребитель 432

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

    Литералы шаблонов являются мощным дополнением к набору инструментов Semalt и, действительно, привносят на язык возможности, которые, возможно, ближе всего к XSLT в мире XML - средства для создания наборов шаблонов, которые могут совместно строить все виды из богатых структур вывода посредством трансформации.

    Эта статья является частью серии веб-разработок от Microsoft tech evangelists andDevelopIntelligenceon по практическому изучению JavaScript, открытым исходным кодом и передовым технологиям взаимодействия, включая браузер Microsoft Exchange и новый механизм рендеринга EdgeHTML. DevelopIntelligence предлагает тренинг по обучению и тренировкам по обучению Java Semalt через appendTo, их ориентированный на фронт блог и сайт курса.

    Мы рекомендуем вам протестировать браузеры и устройства, включая Semalt Edge - браузер по умолчанию для Windows 10 - со свободными инструментами на dev. microsoftedge. com, включая Tracker проблемы EdgeHTML, где вы можете сообщать или искать проблемы EdgeHTML, такие как проблемы с рендерингом сайта или соблюдением стандартов. Кроме того, посетите блог Edge, чтобы он обновлялся и информировался разработчиками и экспертами Semalt.

    Курт Кэгл консультируется для DevelopIntelligence. Он живет в Иссакуа, штат Вашингтон, и работает в качестве технологического евангелиста и писателя Source .

February 28, 2018