<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[LIT - JavaScript фреймворк]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/6d/d8/5d/1766153417530-e47c465b-60d1-4503-a9bc-88dac6611403-image.webp" alt="e47c465b-60d1-4503-a9bc-88dac6611403-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Знакомьтесь, наверное редко кто заглядывает дальше React или <strong>Vue</strong>, по этому представляю Вам <strong>Lit</strong>  это не очередной «модный фреймворк», а тонкая прослойка над нативными веб компонентами, которая дает реактивность, шаблоны и удобный DX без килотонн бойлерплейта и зависимостей.</p>
<hr />
<h2>Что такое Lit простыми словами</h2>
<p dir="auto">Lit - это небольшая JS‑библиотека (~5–6 КБ gzipped), которая помогает писать быстрые веб‑компоненты с реактивным состоянием и декларативными шаблонами.<br />
​<br />
Каждый компонент на Lit полноценный веб-компонент, который можно использовать где угодно: в ванильном HTML, в React, Vue, Angular и т.д.</p>
<blockquote>
<p dir="auto">Кстати на GitHub используется Lit, а еще к примеру на сайте blizzard, проверить можете через <a href="https://chromewebstore.google.com/detail/wappalyzer-technology-pro/gppongmhjkpfnbhagpmjfkannfbllamg?hl=ru" target="_blank" rel="noopener noreferrer">Wappalyzer</a>:<br />
<img src="/assets/uploads/files/ec/c4/b2/1766153579293-fd03e2cc-549b-40cb-853e-68548efd1982-image.webp" alt="fd03e2cc-549b-40cb-853e-68548efd1982-image.png" class=" img-fluid img-markdown" /><br />
​</p>
</blockquote>
<p dir="auto">Основная идея: берем стандарты (Custom Elements, Shadow DOM, ES‑модули) и добавляем тонкий слой синтаксического сахара - реактивные свойства, шаблоны через html и удобные lifecycle‑хуки.</p>
<p dir="auto"><strong>Ключевые фичи, которые продают Lit</strong>:</p>
<ul>
<li>Нативные веб-компоненты. Компонент это обычный <code>custom element</code> с Shadow DOM, который живёт без сборки и фреймворка, если нужно.</li>
<li>​Реактивные свойства: изменил поле класса → <strong>Lit</strong> сам перерисовал шаблон, без ручного <code>document.querySelector</code>.</li>
<li>​Шаблоны через <code>tagged template literals (html\``)</code> вместо JSX, без виртуального DOM.</li>
<li>​Инкапсулированные стили через <code>static styles = css</code> и Shadow DOM, плюс поддержка <code>constructable stylesheets</code>.</li>
<li>​Минимальный размер бандла и хорошая производительность по памяти и скорости рендера.</li>
</ul>
<h3>Минимальный пример компонента на Lit</h3>
<p dir="auto">А теперь посмотри как lit выглядит в коде:</p>
<pre><code class="language-js">import { LitElement, html, css } from 'lit';

class MyCounter extends LitElement {
  static properties = {
    count: { type: Number },
  };

  static styles = css`
    .counter {
      display: inline-flex;
      align-items: center;
    }
    button {
      cursor: pointer;
      background: #4f46e5;
      color: #e5e7eb;
    }
  `;

  constructor() {
    super();
    this.count = 0;
  }

  #inc() {
    this.count++;
  }

  #dec() {
    this.count--;
  }

  render() {
    return html`
      &lt;div class=&quot;counter&quot;&gt;
        &lt;button @click=${this.#dec}&gt;−&lt;/button&gt;
        &lt;span&gt;${this.count}&lt;/span&gt;
        &lt;button @click=${this.#inc}&gt;+&lt;/button&gt;
      &lt;/div&gt;
    `;
  }
}

customElements.define('my-counter', MyCounter);
</code></pre>
<p dir="auto">Похож чем-то на реакт)) Подключаем этот скрипт - и дальше в любом HTML пишем:</p>
<pre><code class="language-html">&lt;my-counter&gt;&lt;/my-counter&gt;
</code></pre>
<p dir="auto">Весь прикол заключается в том что мы создаем кастомный элемент:</p>
<pre><code class="language-js">customElements.define('my-counter', MyCounter);
</code></pre>
<p dir="auto">Никакого ReactDOM.render, createApp и прочих церемоний, компонент это обычный HTML‑тег.</p>
<p dir="auto">Если сравнивать с инженерной точки зрения <strong>Lit</strong> решает ту же задачу - <strong>UI</strong>, реактивность, композиция - но делает это через веб-компоненты, а не через виртуальный DOM и проприетарные абстракции.</p>
<p dir="auto">С порогом входа там все довольно гуманно: если комфортно чувствуешь себя в современном JS и понимаешь, как работают веб-компоненты, <strong>Lit</strong> воспринимается как логичное, аккуратное расширение платформы, а не как очередной «мир в мире».</p>
<p dir="auto">А также по мимо <strong>Lit</strong> с это задачей прекрасно справится <a href="https://svelte.dev/" target="_blank" rel="noopener noreferrer">Svelte</a>, так что если требуется внедрить какие ни будь кастомные виджеты то смело можно брать что-то из этих двух.</p>
<p dir="auto"><div class="card col-md-9 col-lg-6 position-relative link-preview p-0">



<a href="https://lit.dev/" title=" Lit">
<img src="https://lit.dev/images/logo-whitebg-padded-1600x800.png" class="card-img-top not-responsive" style="max-height: 15rem;" alt="Link Preview Image" onerror="this.parentElement.remove()" />
</a>



<div class="card-body">
<h5 class="card-title">
<a class="text-decoration-none" href="https://lit.dev/">
 Lit
</a>
</h5>
<p class="card-text line-clamp-3">Simple. Fast. Web Components.</p>
</div>
<a href="https://lit.dev/" class="card-footer text-body-secondary small d-flex gap-2 align-items-center lh-2">



<img src="https://lit.dev/images/flame-favicon.svg" alt="favicon" class="not-responsive overflow-hiddden" style="max-width: 21px; max-height: 21px;" onerror="this.remove()"/>



<p class="d-inline-block text-truncate mb-0">lit.dev <span class="text-secondary">(lit.dev)</span></p>
</a>
</div></p>
]]></description><link>https://forum.exlends.ru/topic/358/lit-javascript-frejmvork</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:12:12 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/358.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Dec 2025 14:30:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to LIT - JavaScript фреймворк on Wed, 24 Dec 2025 13:02:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/aladdin" aria-label="Profile: Aladdin">@<bdi>Aladdin</bdi></a> Спасибо ща чекну</p>
]]></description><link>https://forum.exlends.ru/post/1225</link><guid isPermaLink="true">https://forum.exlends.ru/post/1225</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Wed, 24 Dec 2025 13:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to LIT - JavaScript фреймворк on Wed, 24 Dec 2025 13:02:38 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kirilljsx" aria-label="Profile: kirilljsx">@<bdi>kirilljsx</bdi></a> вот <a href="/topic/365/lit-vs-svelte-bitva-za-proizvoditelnost-i-vybor">сравнение svelte и lit</a><br />
я работал больше с svelte  и внедрял в проект next.js как веб компонент и че хочу сказать</p>
<ul>
<li>интеграция не очень удобная если честно, но работает неплохо. Это решение более легкое, чем  если бы я вставлял один фреймворк в другой из большой тройки фреймворком.</li>
<li>Сам svelte показался довольно удобным, новый синтаксис на рунах  норм,   тайпскрит тоже завезли, что есть хорошо,  и мне нравится больше чем в lit.</li>
<li>Веб компоненты  делать можно, но подрастает размер,  бандла  примерно на 10 кб.</li>
</ul>
]]></description><link>https://forum.exlends.ru/post/1223</link><guid isPermaLink="true">https://forum.exlends.ru/post/1223</guid><dc:creator><![CDATA[Aladdin]]></dc:creator><pubDate>Wed, 24 Dec 2025 13:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to LIT - JavaScript фреймворк on Fri, 19 Dec 2025 20:57:19 GMT]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/bb/4a/52/1766177837637-03dbdab3-8f0d-41c0-9ae4-3f2932e97872-image.webp" alt="image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.exlends.ru/post/1212</link><guid isPermaLink="true">https://forum.exlends.ru/post/1212</guid><dc:creator><![CDATA[Dinozaur]]></dc:creator><pubDate>Fri, 19 Dec 2025 20:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to LIT - JavaScript фреймворк on Fri, 19 Dec 2025 16:16:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/kirilljsx" aria-label="Profile: kirilljsx">@<bdi>kirilljsx</bdi></a> Не душни старче, а lit рил прикольненький так что хватит свой ракт с некстом мучить</p>
]]></description><link>https://forum.exlends.ru/post/1210</link><guid isPermaLink="true">https://forum.exlends.ru/post/1210</guid><dc:creator><![CDATA[hannadev]]></dc:creator><pubDate>Fri, 19 Dec 2025 16:16:49 GMT</pubDate></item><item><title><![CDATA[Reply to LIT - JavaScript фреймворк on Fri, 19 Dec 2025 14:41:10 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/hannadev" aria-label="Profile: hannadev">@<bdi>hannadev</bdi></a> А ты чо шарить начала что-ли?<br />
Ща призову <a class="plugin-mentions-user plugin-mentions-a" href="/user/aladdin" aria-label="Profile: aladdin">@<bdi>aladdin</bdi></a> он тебе за Светли пояснит раз на раз <img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f601.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--grin" style="height:23px;width:auto;vertical-align:middle" title=":grin:" alt="😁" /><br />
<img src="/assets/uploads/files/29/bb/54/1766154769502-2a79641e-3c3d-4d71-9ad9-b73954379aec-image.webp" alt="2a79641e-3c3d-4d71-9ad9-b73954379aec-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.exlends.ru/post/1209</link><guid isPermaLink="true">https://forum.exlends.ru/post/1209</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Fri, 19 Dec 2025 14:41:10 GMT</pubDate></item></channel></rss>