Press "Enter" to skip to content

Templating languages: The hidden costs — Fun Fun Function


хорошее утро в понедельник сегодня я собираюсь
взгляните на шаблонные языки, такие как
рули или язык шаблонов
который встроен в поле зрения, например , и
Я собираюсь сравнить шаблоны
языки родному тренеру Jaso, где
вы были JavaScript, играя роль
язык шаблонов — это
подход, который, например, использует
когда вы выступаете за использование
язык шаблонов вы часто цитируете два
основные преимущества шаблонов языков
являются выразительными и декларативными, я собираюсь
говорить о тех преимуществах, но я
также будет говорить о трех затрат
которые приходят с использованием шаблонов
языковые шаблоны языков добавить
сложность вашего стека, они добавляют
социальные издержки, и в результате
это то, что мы собираемся
поговорите о сегодняшнем мпд, и вы
наблюдая удовольствие от функции , если мы посмотрим
назад во времени говорят мужчины 5 лет назад или около того
стандартный способ рендеринга
Dom должен был использовать язык шаблонов для
склейте свою бизнес-логику вместе с
ваш дом , то пару лет назад я
вы помните, как реагируют старые, как три
четыре года в любом случае реагируют на
сцена, и он ушел с шаблонами
Вместо этого он использовал только родные
JavaScript в роли, которая
языки шаблонов были до того, как я просто
хочу быть ясным здесь, что мы не
связанные с JSX или виртуальным Dom в
это видео теперь JSX
представляет собой тонкий слой поверх родной
встроенный javascript, который реагирует на использование и
мы не очень обеспокоены тем, что
мы обеспокоены тем, что это
это все еще собственный javascript.
под этим очень тонким слоем это не
косвенным, а также
reiax технически не генерирует реальных
doumitt генерирует виртуальную доминанту
бит, что он, как будто мы на самом деле
что в этом видео
о чем мы говорим здесь,
чистый пользовательский язык шаблонов и
мы сравниваем это с родным Джасом
эквивалент родной j как профи
в последнее время набирает силу
лет, но шаблоны языков у нас есть
использовали их в течение длительного времени и много
разработчики не убеждены в том, что
родной Jas является шагом вперед в
это видео я собираюсь немного поговорить
бит о стоимости и преимуществах
шаблонов языков и дать вам, как
чувство мышления за родным JX
использует и почему они отошли от
шаблонов языков и почему много
люди делают это выразительно, когда шаблоны
языки очень выразительны, потому что
в отличие от JavaScript, который является
язык программирования общего назначения
языки шаблонов предназначены для
только одна вещь, и это сделать
HTML- декларативные языки шаблонов
предназначены для поощрения декларативных
интерфейсы, кстати, если вы не уверены
какое декларативное программирование вы
может захотеть проверить это видео, которое
Я сделал это, и это видео собирается сделать
мы гораздо больше понимаем, что все технологии имеют
некоторые преимущества и все технологии
некоторые из них стоят первой причиной шаблонов
языки — это сложность, потому что вы
просто добавляя полностью язык к
ваша технология стека вторая стоимость
социальная стоимость любого, кто работает в вашей
codebase теперь должен узнать это немного
дополнительный язык в дополнение к JavaScript
и третья стоимость — это множество инструментов, если
вы используете язык шаблонов
вы отбрасываете всю силу
JavaScript не только сам язык
но и экосистемы
библиотеки, написанные на нем, и все
инструменты и ограничители, редакторы и идентификаторы
это расходы и выгоды, которые я получаю
собираюсь говорить сегодня и хорошо
давайте погрузиться в каждый
языковые шаблоны выразительности
очень-очень
потому что они непохожи
JavaScript они предназначены для
одна вещь, и это
рендеринг HTML-шаблонов
по существу, язык, специфичный для домена
и они другие вещи, как будто они
в той же категории, что и сиквел или вы
знать регулярные выражения, они очень
пользовательские языки, предназначенные для выражения
очень специфическая вещь в конкретной
домен отсюда на выходе я собираюсь
покажу вам кучу примеров, которые я собираюсь
показать примеры шаблонов языков
по сравнению с эквивалентными примерами в
родной JSF плотва
Я очень намеренно не собираюсь
используя любую реальную
реагируют или вид или рули и тому
Причиной этого является то , что многие из
пункты, которые я собираюсь попытаться сделать или
связанных с знакомством и
понятность и это будет просто
перекос , если вы знакомы с
синтаксис технологии уже, но вы можете
сортировать все думаю об этом примере как
вид реакции без JSX и своего рода
рули, и мы собираемся предположить
что оба они имеют одинаковый рендеринг
черты , так как представить себе , что оба из них
предоставляют виртуальный Dom и все
характеристики рендеринга одинаковы
потому что это у вас есть
детали реализации мы не
что в этом видео мы
касающийся общей формы
язык шаблонов по сравнению с нативным j / s
подходите прямо сейчас, мы собираемся сейчас
посмотрите на код шаблонного
язык и помните, что мы сейчас
пока смотрим на это с
выразительность Я собираюсь
молчать в течение 15 секунд , чтобы
посмотрите на этот пример, попытайтесь понять
что он делает
вы
все в порядке, давайте пройдем через это
шаблон имеет этот тусклый, он называется
цены, а это, в свою очередь,
содержит этот неупорядоченный список с некоторыми
некоторые пункты здесь отмечают, что это только показывает
список, если он содержит некоторые элементы в
в противном случае он покажет абзац
здесь, где найдены новые налоговые предметы
внутри внутри каждый предмет
он показывает цену, и она также запускает ее
через какую-то валюту формата
вы знаете, это возможно
да, чтобы преобразовать это из всего этого
вероятно, в какую-то приятную валюту
string Я хотел бы
внимание к одному в этом примере
и тот факт , что вы могли бы
возможно, просто взглянув на эту цифру
из чего он сделал , даже если это
Язык , который не существует вы
вы не знакомы с ним заранее
даже если вы даже не были знакомы с
временный секретарь концепции языков шаблонных
это, вероятно, все еще имеет смысл
не пытается быть универсальным
язык, такой как Java Script, и позволяет
Вы вам выбросить много энергии и
много возможностей для того , чтобы получить это
читаемость и выразительность для этого
очень конкретный случай HTML-рендеринг и
теперь мы посмотрим на другую
пример, который делает то же самое
но он делает это с использованием родной JSA и
который выглядит , как это я буду
снова замолчать в течение 15 секунд и
попытаться понять это
вы
все в порядке, так что пройдем через это
это отображает цены на контейнер
возвращает меня, и вы это сделали, и у него есть
CSS- список классов, и это
отличный пример того, как шаблон
язык чрезвычайно выразителен, потому что
здесь с JavaScript мы должны использовать
имя класса, потому что javascript не
разработанный именно для этого, это
универсальный язык программирования, поэтому
он имеет понятие оговорки, это
другое дело JavaScript, так что это
зарезервированное слово, которое мы не можем использовать в этом
контекста, поэтому мы должны использовать свойство
вместо этого вместо имени класса
внутри DIV и если детали
массив имеет длину, он вернет ul
неупорядоченный список и этот неупорядоченный список
внутри себя есть список из списка
элементы это просто Карты через список
и возвращает элемент списка для
все как это да нравится шаблон
примеры форматируют валюту до
вставляя его в ли и если элемент
длина книги неверна e0, она вернется
этот абзац с текстом нового света и
звук, так что все это просто JavaScript
нет специального языка
дополнения, которые мы здесь сделали, это просто
чистый JavaScript это выглядит намного меньше
как HTML, чем шаблонный пример даже
хотя это JavaScript, что мы
знакомый с ним все еще чувствует себя немного
бит чужой и запутанный, потому что у нас есть
сортировать имитацию HTML-рендеринга
в наших руках мы должны провести немного
немного больше возможностей для определения того, как
какой именно HTML это приводит здесь?
бит, как мы попросили удалить эти
с наших головок, а затем
есть HTML давайте уважать
которые мы должны делать в нашей
голова немного немного меньше, теперь я
скажет, что это не огромный
разница, которую вы даже можете назвать
это небольшая разница в том, что это
абсолютно не ракетная хирургия, но мы
еще нужно отдать его шаблонам
языки здесь, что они выразительны
они должны выразить эту вещь
HTML-рендеринг, и они делают это лучше
чем JavaScript изначально позволяет двигаться
и говорить о декларативной Несс, если мы
посмотрите на оба этих примера, они очень
четко диктовать то, что делается
ни один из этих примеров не очень
касательно того, как конкретно
нет обязательного программирования
здесь нет переменных, являющихся
назначено, что нет мутационного состояния
он просто заявляет, что это такое
оба этих примера являются декларативными
в отличие от императива, и это
очень хорошая вещь, потому что декларативный код
почти всегда легче рассуждать о
их императивный код и
особенно верно, и когда дело доходит до
рендеринг в дополнение к тому, чтобы быть
декларативный есть также очень мало
логика в них, они очень
легко рассуждать о том, что не так много
вещи это верно для обоих примеров
но ключевое различие здесь между
язык шаблонов и собственный j’f
Например, язык шаблонов
должно быть таким образом , нет никакого способа , чтобы сделать
императивное программирование в шаблонах
язык в примере JavaScript мы
мог делать всевозможные сумасшедшие вещи
глобальные переменные доступа
поддерживая состояние, но в
язык шаблонов, который вы не можете сделать
что вы не можете создавать переменные
и тому подобное, и в
там плагиатный язык там просто
не много конструктора языка в
общий, поэтому ваш код имеет тенденцию быть довольно
очень минимальный, потому что есть да
не много программирования вы можете сделать и
это по дизайну, это цель
языковые шаблоны templating
или пытаться поощрять даже принудительное исполнение
действительно минимальный и декларативный взгляд
языки шаблонов пытаются
удалить способность от программиста
делать императивные или сложные вещи в
новое, пока я покупаю все
выразительность сказать, что я
Я действительно не покупаю, когда люди говорят
о шаблонах языков как
поощряя декларативный топор C, но я чувствую
существует проблема с этой линией
рассуждения подумаем об этом для
минут
у вас есть эта проблема для нашего злоупотребления
содержат слишком много
мы считаем, что
вместо этого в бизнес-логике
мы можем попытаться решить эту проблему путем введения
весь маленький язык в наш стек
где вы не можете
разработать программирование, о, мы можем остановить
делать императивные и сложные
программирование в наших взглядах да прекратить делать
он просто не ставит настоятельно
логика в ваших взглядах да, это
гораздо более простое решение, чем введение
весь небольшой язык для вашего инструмента
цепи в ответ на то, что вы могли бы сказать
что, но как насчет младшего
Разработчики они не делают , они не имеют
полностью поняла концепцию разделения
однако они думают, что имеют
язык шаблонов может быть хорошим, как
тренировка колес
их от нанесения ущерба нашему проекту
но я действительно не покупаю этот аргумент
потому что у вас все еще есть возможность
делать немые вещи, когда дело доходит до
вы только что переместили его
небольшой слой от шаблона, если
у вас есть член команды , который не
понимать разделение проблем нет
количество технических гарантий или
чтобы помочь вам, что вам нужно сделать, — это
помогать и воспитывать этого человека, или вы
будет большой
проблема на ваших руках, так что шаблоны
языки создаются для поощрения
декларативные взгляды Нессуна, но я думаю, что
менее сложное решение — просто
написать простой и декларативный код в
JavaScript , а не перетаскиванием
весь маленький язык в ваш стек
чтобы вы не допустили ошибку
и это прислушивается к первой стоимости
templating languages ​​сложность нет
вопрос, как вы разрезали его шаблон
язык — это язык программирования, который
является довольно сложной задачей для
втяните в свой проект свой проект как
теперь все сложнее, потому что
Язык шаблонов — это не
вид компонента , который удаляет много
сложность, чтобы вы пожертвовали некоторыми
простоту , чтобы получить
язык шаблонов теперь должен быть
сказал, что это личное значение
в том смысле, что я
человек, который очень ценит простоту
как вероятно, вероятно, выше, чем
большинство людей, которых я один или два раза получал
обратной связи, что я должен принять больше
сложности в
абсолютно разработчики, которые не против
эта дополнительная сложность
добавление языка шаблонов к вашему
проект, это не большое дело, это не
большой компонент, который, по их мнению, хорошо используется
это популярно, это бесплатно, он поддерживается
третьей стороной,
большое дело, но это не то, как я его рассматриваю.
рассматривайте его как тысячу крошечных разрезов
моя философия заключается в том, что
больше вещей, которые вы добавляете к
ваш проект или что-то в жизни действительно
чем больше вы добавляете, тем лучше
неправильно, чем больше вещей пойдет не так, когда
мы добавляем новый инструмент в нашу цепочку инструментов, которая
добавит сложности и может быть
хорошо, я действительно должен подчеркнуть, что это может
быть в порядке , как мы должны быть в состоянии поглотить
некоторая сложность, конечно, потому что мы
вам нужно знать проблемы, и они
находятся
проблемы сложны и очень реальны
Мы должны иметь инструменты, и нам нужно
поглотить некоторую сложность, но точка
Я пытаюсь сделать это, когда вы добавляете
то, что он должен заплатить за свои
сложность, поэтому язык шаблонов
не может быть самой большой стоимостью сложности
в мире, но преимущества, которые
Я использую язык шаблонов
что они очень маленькие, и я думаю
что сложность компромиссного возврата
инвестиций здесь — плохая сделка и
сложность является лишь одной из
шаблонных языков есть также
социальные расходы, о которых я говорил раньше
факт, что язык шаблонов является
доменный язык a dsl другой
языки в этом семействе
используется для описания доступа к данным и
регулярные выражения, которые используются для
описать соответствие строк
они — одна и та же семья, но есть
важное различие , и в том , что
регулярные выражения и продолжение или
относительно стандартизированный, но шаблонный
языки не похожи на то, что есть
многие разные, поэтому новые разработчики
в ваш проект не очень
вероятно, будет знать тот, который
вы используете , чтобы они собираются иметь
провести некоторое время, изучая его и
научившись работать с ним, пойдем
вернуться к исходному примеру шаблона
теперь, как мы это сделали, это очень
выразительный, поэтому легко понять
то, что он делает , очень легко читать
и понять это, но это не
означает, что мы поняли
язык, который мы знаем, как его читать
не означает, что мы знаем, как писать
скажем, у вас было задание
что мы хотим, чтобы цена
с нулями, если оно меньше 10, давайте
скажем, что у нас уже есть функция
это цена пэда с нулями или
что-то вроде этого, как мы получаем это
здесь я мог бы, вероятно, выяснить, что
это может быть что-то вроде этого, но
Я действительно не знаю, как действовать
мы получаем функцию в систему I
необходимо выяснить, как зарегистрировать это
функции в шаблоне анализатора и
вам, вероятно, нужно
плагин вещь или что — то и это
только потому, что нам повезло, потому что у нас есть
этот пример здесь, как если бы мы себе
что это было всего лишь и мы
не видели этого синтаксиса раньше
и шаблоны языков они немного
таким образом, потому что они легко
что они считают доступными, но
чувство уходит, как только вы начинаете пытаться
чтобы написать их, тогда вы понимаете, что они
на самом деле не такие интуитивные, как они
сначала чистые, и вы могли бы сказать oh, что
большая сделка
разработчики вы просто попали в документы, найдите его
Google это разработчики делают все это
время это не ракета-хирургия
разработчик, что в этом хорошего
взглянуть на ту же проблему в
родной jsy brer ii, и поскольку это
да javascript, и мы знаем javascript, мы
может просто добавить функцию, выполненную нами
не нужно изучать любую подключаемую систему
мы просто включаем файл, который просто
нормальный javascript нам не нужно было
узнать все, что мы могли бы сделать
измените сразу, так что да, это не
ракетной хирургии, чтобы найти некоторых собак и
добавьте плагин, но это проблема, которая
существует только из-за шаблонов
язык, родной, ревнивая библиотека
не имеет эту проблему , вы не имеете его
вы не делаете эту работу шаблоном
язык имеет более высокие социальные издержки, чем
родной библиотеки jace, чтобы какой шаблон
язык имеет сложную стоимость социального
стоить и хочу поговорить о третьем
и это потеря инструментов
javascript — очень зрелый язык
очень быстрые и зрелые двигатели и
невероятно обширное множество библиотек
зрелые редакторы и i des и много
инструменты анализа кода, когда вы разрабатываете
другой язык, который вы делаете
доступ ко всем , что и вы
ограничивается любой экосистемой для
что конкретный язык, например , давайте
взгляните на ящерку jsr
Например, я могу вставить это только в
мой редактор, и у меня есть доступ к
все, что угодно
Причудливые брюки, которые у меня есть для моего
Код среды разработки JavaScript
подсветка контекстного контекста
автозаполнение вещи, как это я имею в виду, если я
здесь тут же видно, что
что-то не так, если я делаю то же самое
вещь здесь, как будто она понятия не имеет, потому что
это, конечно, строка
плагины и прочее для этого шаблона
язык, который вы можете установить, но у вас есть
теперь добавлена ​​одна дополнительная вещь для вашего
разработчиков для установки и оснастки
также вряд ли будет столь же зрелым, как
их эквиваленты JavaScript вы также
потерять доступ к власти языка
сам язык шаблонов ограничен
факт это по дизайну, как мы говорили
до того, как он заставит вас не делать
разрабатывать вещи в вашем рендеринге, но
есть вещи , которые не возможны
делать на языке шаблонов, но
еще достаточно простой и минимализма в
хочу, чтобы в
пример, который мы хотели, чтобы я не знал
рассчитать общее количество предметов, давайте
делать
на языке шаблонов вы бы
вероятно, не будет разрешено делать сумму
если вы не знакомы с
уменьшить этот пример, вероятно, будет
сделайте, что это такое, если есть
эпизод здесь по сокращению очень просто
он часто используется для суммирования, но
точка на внутреннем языке шаблонов
вам , вероятно, не разрешено делать сумму
это то, что
является философией шаблонов
язык должен отойти на улицу
шаблон — это немного академический
обсуждение, если сумма предметов — это бизнес
логика или логика представления. Я думаю, это
определенно может квалифицироваться как логика представления
другие могут не согласиться, я не знаю, что
вы думаете, комментарий, если вы согласны
что суммирование элементов — это логика просмотра, тогда
вы можете увидеть, как язык шаблонов
делает вашу жизнь немного сложнее
другое, что JavaScript дает вам
для свободного композиции, например ,
скажем, что у меня были разные типы
элементы, которые могут быть в списке, поэтому я
хотите действительно использовать просмотр списка
контейнер, так сказать, но я хочу быть
способный перетаскивать различные предметы
там с различными видами
шаблоны взглянуть на это и попытаться
первый обернуть голову вокруг него на вашем
пока я не объясню, как это работает
вы
все в порядке, давайте посмотрим на
пример обычный список более или менее
с той же функцией, но мы
дали ему общее название, и мы имеем
изменил его, чтобы принять элемент рендеринга
функция здесь мы также визуализируем элемент теперь
вещь, которая идет в дело так
если вы помните, что пример должен
как раньше, но у нас есть
разбил это на эти и эти
переменные так, чтобы создать
функция, эквивалентная тому, что мы
до того, как мы применили привязку к рендерингу Curry
и это означает, что
мы вызываем bind в списке рендеринга, и мы вызываем
связать с ценой рендеринга рендеринга как
аргумент, и он вернет новый
функция от привязки к ценам рендера
где фиксируется позиция цены товара
поскольку первый аргумент вынесенного
это вид постоянного, я стоял так визуально
прейскурант, который сейчас называется только с
пункты, которые теперь исправлены как
первый аргумент, если каррирование является новым
концепция для вас У меня есть эпизод о том, что
здесь да, так что не увольняй это как
странно, потому что вы не знаете, что
поскольку перенос — это очень
и вы должны научиться так замечать, как
все это просто JavaScript
div ul и @p здесь, что они
то же, что и раньше, но обратите внимание, что
нет понятия компонента, являющегося
здесь, и это работает, потому что
мы делаем все с помощью простого
функции простые функции просты и
составьте эту способность, чтобы мы
получить совершенно бесплатно здесь нужно
переопределяется на языке шаблонов
часто в виде компонента
компоненты или большие реакции действительно имеют их
но при работе с реакцией вы также можете
уйти только с помощью простой визуализации
функции, и это лучше, потому что это
да намного проще, и это были мои
мысли в обобщенных языках шаблонов
хороши для выражения HTML-рендеринга
что
что они построены для шаблона
языки направлены на поощрение минималистических
и декларативное программирование, но вы можете
просто сделайте это в любом случае в JavaScript.
добавлена ​​стоимость языковых шаблонов
сложность стека социальной стоимости и много
инструменты, которые вы только что просмотрели эпизод
веселой функции я выпускаю это каждый
В понедельник утром всегда сто GMT, если вы
не хочу , чтобы ждать до следующего понедельника вас
может наблюдать этот эпизод , это мозг
в банке, что бренды Google как машина
обучение выбрано для вас Я mvj
до следующего утра в понедельник
оставаться любопытным
Please follow and like us:

Be First to Comment

Добавить комментарий