TLX был представлен в статье Замена JSX шаблонными литералами. В этой статье мы покажем, как использовать TLX для поддержки облегченных HTML-шаблонов без использования препроцессора. Вы можете просто предоставить объект JSON и связать его с существующим элементом HTML DOM, который содержит литералы шаблона в HTML. Общие накладные расходы составляют всего 4,9 КБ (в сжатом виде).

Например, вот когда-либо популярный Hello World:

<div id="helloworld">
${message}
</div>
<script>
const data = {message: "Hello World"};
tlx.bind(data)(document.getElementById("helloworld"));
</script>

Конечно, есть гораздо более мощные способы использования, например создание шаблона для всей страницы:

<html>
<head>
<script src="../browser/tlx-core.js"></script>
<script src="../browser/tlx-render.js"></script>
<script>
const replacements = {
  data: {
    name: "Joe",
    pii: {
      age: 27,
      phone: "(555)-555-1212"
    }
  },
  html: {
    title: "TLX Example"
  }
};
</script>
</head>
<body onload="document.tlxRender(replacements,true)">
  ${!(document.title=html.title)||""}
  Hello <b>${data.name}</b>, we have the following information about
  you: 
  <ul>
    ${Object.keys(data.pii).map(key =>
      tlx`<li>${key}: ${data.pii[key]}</li>`)
    }
  </ul>
</body>
</html>

Обратите внимание на возможность использовать всю мощь литералов шаблонов JavaScript для создания побочных эффектов, таких как установка заголовка страницы и циклическое перемещение по карте для создания неупорядоченного списка элементов с использованием встроенного вызова tlx. Литерал встроенного шаблона с вызовом tlx включается путем предоставления true в качестве второго аргумента для document.tlxRender.

В каком-то смысле это переворачивает JSX с ног на голову, фокусируясь на HTML с небольшим количеством JavaScript и отсутствием процесса сборки по сравнению с обычно большим количеством JavaScript и процессом сборки. Короче говоря, он больше ориентирован на дизайнера пользовательского интерфейса, чем на программиста. В некоторых случаях это также может иметь существенное положительное влияние на SEO.

Кроме того, TLX поддерживает директивы, аналогичные VUE. Вот тот же код, использующий директиву t-foreach.

<html>
<head>
<script src="../browser/tlx-core.js"></script>
<script src="../browser/tlx-render.js"></script>
<script src="../src/tlx-directives.js"></script>
<script>
const replacements = {
  data: {
    name: "Joe",
    pii: {
      age: 27,
      phone: "(555)-555-1212"
    }
  },
  html: {
    title: "TLX Example"
  }
};
</script>
</head>
<body onload="document.tlxRender(replacements)">
  ${!(document.title=html.title)||""}
  Hello <b>${data.name}</b>, we have the following information about
  you: 
  <ul t-foreach="${data.pii}">
    <li>${key} : ${value}</li>
  </ul>
</body>
</html>

Обратите внимание на дополнительное включение tlx-directives.js. TLX позволяет вам добавлять только тот код, который вам нужен, чтобы свести к минимуму объем используемой памяти. Всего 0,5 КБ добавляется с помощью минархива tlx-directives.js.

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

Директива t-foreach автоматически предоставляет переменные key, value и object во вложенный HTML.

TLXподдерживает директивыt-foreach, t-for с квалификаторами in и of, t-if для условного отображения и t-on для привязки обработчиков событий. Добавление пользовательских директив можно выполнить всего за одну строку кода. Более подробно расширенное использование директив будет рассмотрено в следующей статье.