Frontender's notes [ru] – Telegram
Frontender's notes [ru]
33.8K subscribers
578 photos
38 videos
1 file
3.43K links
Ведущий канал о современном фронтенде: статьи, новости и практики.

По вопросам рекламы или разработки:
@g_abashkin

РКН: https://vk.cc/cJPG6y
Download Telegram
Forwarded from xCode Journal
🥲 Пум пум пум

Анализ 180 миллионов вакансий показал, какие профессии реально под ударом из-за ИИ:
— С 2023 по 2025 год больше всего не повезло творческим профессиям: вакансий графических дизайнеров стало меньше на 33%, фотографов на 28%, копирайтеров и редакторов — тоже около 28%.

— Зато спрос на ML-специалистов вырос на 40%, специалисты по робототехнике и программисты пока тоже в безопасности — ИИ тут скорее помогает, чем замещает и отнимает работу.

— Единственные, у кого уменьшилось количество вакансий в ИТ-сфере — это у фронтендеров.


✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👀24👎11🐳43
📄 Storage Foundation API: Удобное хранилище данных для PWAs

Для работы с данными в браузере традиционно используются localStorage и IndexedDB. Однако появился новый инструмент — Storage Foundation API. Это низкоуровневый API для взаимодействия с хранилищем как с файловой системой или базой данных без дополнительных библиотек.

❗️ Пример использования:

const file = await storageFoundation.open('data.bin');
await file.write(new Uint8Array([1, 2, 3, 4]));
const bytes = await file.read(0, 4);


Что это даёт?

• Здесь мы открываем файл data.bin, записываем в него данные и читаем их обратно. Это простое и понятное API для работы с бинарными файлами в браузере.

• Storage Foundation API предоставляет мгновенный доступ к данным в пределах sandbox-браузера, поддерживает хранение больших объёмов информации и обеспечивает работу в оффлайн-режиме для PWA.

• Полезно в PWA-приложениях для оффлайн-режима, клиентских базах данных для мини-SQLite, машинном обучении в браузере для хранения моделей и обработки данных, а также в медиа-приложениях для обработки аудио и видео без отправки данных на сервер.

• Storage Foundation API пока экспериментален и доступен только в Chromium-браузерах. Обсуждается его включение в стандарт Web Platform, что ускорит принятие и поддержку в других браузерах.


📌 Если вы работаете над офлайн-веб-приложениями с кучей данных то вероятно вам может быть интересна эта фича. Этот API дает веб-приложениям свои собственные инструменты для хранения данных.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥103👍1🐳1
DevTools Performance Panel: Необходимый инструмент для повседневного дебага

Если ты используешь Performance только при «тормозах» сайта, ты теряешь его потенциал. Performance Panel в Chrome DevTools — это такая штука, которая помогает понять, как работает ваш сайт или приложение, найти, где оно тормозит, и вообще прокачать свои навыки в отладке.

🔎 Что можно увидеть?

— Main thread timeline: отслеживай, что именно делает JS и как браузер обрабатывает рендеринг — какие скрипты выполняются, когда происходит layout и paint.
— FPS и CPU usage: сразу видно, где падает производительность, и как нагрузка распределяется по процессору.
— Recalculate Style / Layout / Repaint: цепочка событий, которая показывает, когда браузер реально пересчитывает стили и перерисовывает DOM.
— Flame chart: один из самых эффективных способов понять, какие функции или компоненты (например, в React) занимают много времени на рендеринг.


💡 Как использовать Performance каждый день

• Не ограничивайся визуальными оценками. Просто открой Performance, нажми Record и наблюдай, сколько кадров в секунду выдает твой интерфейс. Это даст тебе цифры, на основе которых будет проще выявлять проблемы с производительностью.

• Включи опции Screenshots и Memory. Это сразу покажет визуальные лаги и поможет отследить утечки памяти.

• Если ты часто видишь события Recalculate Style и Layout — это может быть сигналом, что где-то в CSS происходит ненужное перерасчитывание, например, при использовании offsetWidth внутри цикла.

• Используй вкладку React Profiler в сочетании с Performance Panel. Ты будешь видеть, какие компоненты перерисовываются лишний раз, что поможет оптимизировать рендеринг.


Комбо для продвинутых

• Performance Insights (beta) — Chrome сам подскажет тебе, какие части кода замедляют работу приложения.
• Web Vitals overlay — на лету покажет LCP, CLS и FID во время профилирования, чтобы увидеть влияние на производительность.
• Performance.mark() и measure() — возможность добавлять свои точки измерения в код


📌 Performance Panel — это не просто графики и странные цифры. Это мощный инструмент, который ты должен использовать ежедневно для оптимизации своего кода. Записывай, анализируй и ищи лишние рендеры или медленные layout’ы, и ты уже гораздо лучше будешь понимать слабые места своего проекта.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🐳1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📣 Почему простота в коде — это не всегда легкая задача

Когда я только начинал, мне казалось, что чем меньше кода, тем проще. Простой код — это просто минимум строк, не так ли? Но с опытом я понял, что простой код — это понятный код. И вот тут начинается самое интересное. Понять, что делает код, намного сложнее, чем просто написать его.

➡️ Отбрасывание лишнего — ключ к простоте
Научиться делать код простым — значит уметь отбрасывать всё лишнее. Это не про то, чтобы уменьшить количество строк до минимума. Нужно не писать «на будущее».

➡️ Понимание задачи — вот что важно
Очень важно понять суть задачи. Чтобы не строить архитектуру для фичи, которая никогда не выйдет в прод.

➡️ Объяснить сложное простыми словами
Важно уметь объяснять сложные вещи не только в коде, но и в PR и документации.


📌 Писать сложно может каждый. Писать просто — значит, ты действительно понял задачу и её решение. Это про ясность и понимание.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🔥1
Forwarded from xCode Journal
This media is not supported in your browser
VIEW IN TELEGRAM
🤣 Когда тестировщик нашел баг перед релизом

💥 xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁404🐳1
🔎 Когда CSS Grid вытягивает сложные макеты, а Flex не справляется

Все любят Flex — это универсальный инструмент, который решает большинство задач. Но когда дело доходит до сложных макетов, где нужно больше, чем просто выравнивание в одну ось, CSS Grid становится настоящим спасением.

Двумерное выравнивание

Flex работает с одной осью (строка или колонка), но не всегда выравнивает элементы по вертикали и горизонтали. Для этого используется Grid. Пример: карточки товаров с разной высотой описания. Flex создает «рваные» ряды, а Grid выравнивает их идеально по сетке, независимо от высоты контента.

.products {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 16px;
}


Когда важна структура, а не порядок в HTML

Grid позволяет менять расположение элементов без изменения разметки. В отличие от Flex, который зависит от порядка элементов в HTML, Grid работает по правилам сетки. Используйте grid-area для назначения областей и их изменения местами, включая адаптивные макеты, без JS.

grid-template-areas:
"header header"
"sidebar main"
"footer footer";


Точное позиционирование

Grid обеспечивает точное позиционирование элементов, что идеально подходит для сложных интерфейсов, таких как панели, дашборды и формы. В Flex это сделать сложнее и менее предсказуемо.

.item {
grid-column: 2 / 4;
grid-row: 1 / 3;
}


Адаптивность без медиазапросов

Grid автоматически подстраивается под доступное пространство без сложных медиазапросов. Это удобно для адаптации элементов по ширине экрана.

grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));


👀 Когда использовать Flex вместо Grid

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


📌 Flex — это как универсальный нож для простых дел, а Grid — это как мощный инструмент для сложных и многослойных макетов. Когда ваш дизайн становится сложнее и требует точности, самое время переходить на Grid.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5👎1🐳1
Forwarded from xCode Journal
🤦‍♂️ «Вайб-кодинг» стал словом года по версии словаря Collins

В топе важнейших слов также оказались «микропенсия» и «кланкер» — последнее не про веселосипеды, так пренебрежительно называют роботов и эти ваши нейросети.

Деградируем, или нет?

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8👎5👍3🐳1
🔼 Cascade Layers — новый взгляд на старую проблему каскада в CSS

Помните, как каскад в CSS был кошмаром? Теперь с Cascade Layers (@layer) управление приоритетами стилей стало проще. @layer позволяет определять порядок применения слоев стилей, устраняя хаос и необходимость использования !important.

❗️ С помощью @layer мы можем разделить стили на различные уровни — от сброса стилей до переопределений для компонентов

@layer reset, base, components, overrides;

@layer reset {
* { margin: 0; padding: 0; }
}

@layer components {
button { background: var(--accent); }
}

@layer overrides {
.danger button { background: red; }
}


Что это даёт?

• Чёткий контроль приоритетов без использования !important. Теперь стили можно упорядочить и применять в правильном порядке, без необходимости прибегать к грязным хакам.

• Простое масштабирование больших проектов. Когда проект растёт, важно, чтобы управление стилями было предсказуемым. С @layer это становится возможным.

• Отлично работает с CSS Modules и Design Tokens, что делает это решение ещё более мощным при работе с крупными кодовыми базами и современными методологиями.


📌 С Cascade Layers каскад больше не враг. Это инструмент для архитектуры, который помогает контролировать стили на уровне слоёв и упрощает поддержку кода в крупных проектах.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🐳1
💡 File System API 2.0 — будущее оффлайн-приложений

С каждым годом веб-приложения становятся все более похожими на нативные. File System API 2.0 позволяет работать с локальными файлами пользователя через браузер, как с файловым менеджером. Теперь можно читать, записывать и создавать файлы без скачивания.

❗️ Что изменилось с появлением версии 2.0?

• Более безопасная модель доступа: В версии 2.0 добавлена поддержка доступа к файлам через приватные файловые системы с origin-сигнатурой, что значительно улучшает безопасность.

• Поддержка директорий: В новой версии можно работать не только с отдельными файлами, но и с целыми каталогами, что открывает новые горизонты для разработчиков.

• Асинхронные операции: Все операции с файлами теперь выполняются асинхронно, с использованием промисов, что избавляет от блокировок и делает работу с файлами ещё более эффективной.

• Совместимость с Service Workers: Эта совместимость делает File System API идеальным инструментом для создания оффлайн-приложений.


Где полезно и некоторые ограничения

— Текстовые или кодовые редакторы в браузере: Создавайте полноценные редакторы прямо в веб-приложении, с возможностью работы с файлами.

— PWA-приложения: Web-приложения, поддерживающие оффлайн-режим, могут теперь использовать локальный кэш и сохранять данные на устройстве.

— Инструменты для работы с дизайном или видео: Позвольте пользователям работать с локальными файлами, не переходя в облако.

— Корпоративные дашборды: Экспорт и импорт данных теперь можно делать прямо с локального устройства.

— API всё ещё не поддерживается во всех браузерах.

— Для работы с файлами требуется user consent. То есть пользователи должны явно согласиться на доступ к их файлам.

— Некоторые функции могут быть в экспериментальной стадии, и с течением времени они могут изменяться.


📌 File System API 2.0 станет нативной файловой системой для веб-приложений, обеспечивая их работу на уровне VS Code, Figma или Notion без установки. Это откроет новые возможности для разработчиков и улучшит работу с данными в вебе.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍4
👤 Monorepo vs Multirepo — что выбрать для вашего проекта?

Когда дело доходит до структуры репозиториев, многие сталкиваются с вопросом: какой подход лучше выбрать — Monorepo или Multirepo? Оба варианта имеют свои плюсы и минусы, и выбор зависит от масштабов проекта, команды и специфики работы. Давайте разберёмся, что подходит для какого случая.

ℹ️ Monorepo: все в одном репозитории

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

Плюсы и минусы:

Единый процесс разработки и деплоя
Процесс деплоя и разработки стандартизирован, что упрощает рабочий процесс для всей команды.

• Общие зависимости и конфигурации

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

• Лёгкость в поддержке кодстайла и линтеров

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

• Простота навигации и кросс-рефакторинга
Все пакеты и модули в одном месте — проще искать и изменять код, особенно когда нужно сделать кросс-рефакторинг.

• CI/CD может замедляться без грамотного кеширования
Когда проект становится слишком большим, процессы CI/CD могут стать медленными, если не настроить их правильно.

• Трудности с разграничением прав доступа и размеры
Разделение доступов для разных команд создает проблемы. С ростом числа пакетов и проектов репозиторий значительно увеличивается в размере.

• Требуются специальные инструменты
Чтобы управлять монорепозиторием эффективно, часто требуются инструменты вроде Nx, Turborepo или Bazel, иначе можно столкнуться с хаосом.


❗️ Multirepo: каждый проект в своём репозитории

В случае с Multirepo каждый проект или пакет имеет свой отдельный репозиторий. Это подход, который часто выбирают для небольших проектов или независимых сервисов.

Плюсы и минусы:


• Простота изоляция и независимые релизы и CI/CD

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

• Легче мигрировать и экспериментировать

Если нужно изменить одну часть системы, это проще сделать, не затрагивая другие проекты.

• Повторение конфигураций и версионный ад

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

• Сложности с централизованными обновлениями

Когда нужно обновить общие утилиты или библиотеки, это становится сложным и трудоёмким процессом.


📌 Многие компании выбирают гибридный подход: делают всё в одном большом репозитории (monorepo) для базовых вещей, а специфические проекты держат в отдельных (multirepo). Так можно получить плюсы от обеих моделей. Всё зависит от того, какой у вас проект, какая команда и какие планы на будущее.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥3👍1
Forwarded from xCode Journal
🤣 Рабочий день вайбкодера примерно такой

💥 xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁848🐳43🔥1
🔼 Пример того как можно работать с File System API 2.0

Выше, в этом посте я писал о том что существует такая штука как File System API 2.0. Теперь решил скинуть вам пример того как это работает.

ℹ️ Вот как легко можно сохранить текстовый файл прямо на диск с помощью showSaveFilePicker():

// Проверяем поддержку
if ('showSaveFilePicker' in window) {
const handle = await window.showSaveFilePicker({
suggestedName: 'data.txt',
types: [
{
denoscription: 'Text file',
accept: { 'text/plain': ['.txt'] },
},
],
});

const writable = await handle.createWritable();
await writable.write('Hello, world!');
await writable.close();

console.log('Файл сохранён прямо на диск');
} else {
console.log('File System API не поддерживается в этом браузере');
}


Что происходит в коде?

• showSaveFilePicker() — открывает системный диалог для сохранения файла
• createWritable() — создаёт поток записи в файл
• write() — записывает данные в файл
• close() — закрывает поток и сохраняет файл на диск


🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
27👍5🔥1😁1🐳1
Современные подходы к организации CSS: ITCSS, CUBE CSS и BEM 2.0

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

ITCSS — Inverted Triangle CSS

ITCSS (Inverted Triangle CSS) — структурированный подход с разделением стилей на слои: общие наверху, специфичные внизу. Обеспечивает порядок, предсказуемость и гибкость, но может быть громоздким для небольших проектов.

• Settings — переменные, которые задают глобальные параметры
• Tools — функции и миксины, которые помогают управлять стилями
• Generic — базовые стили, например, normalize или reset
• Elements — стили для HTML-элементов
• Objects — макетные паттерны, такие как сетки или карточки
• Components — конкретные элементы интерфейса, например, кнопки или карточки
• Utilities — точечные стили для специфичных случаев, например, margin-top или z-index


CUBE CSS — Composition, Utility, Block, Exception

CUBE CSS — современный подход Энди Белла, фокусирующийся на принципах организации, а не структуре папок. Основная идея: Keep CSS modular and predictable. Подходит для Tailwind, CSS Modules и CSS-in-JS.

• Composition — компоненты и layout-паттерны, например, flexbox или grid
• Utility — маленькие одноцелевые классы, например, .flex или .gap
• Block — самодостаточные компоненты, например, .card
• Exception — редкие и специфичные оверрайды для нестандартных случаев


BEM 2.0 — Современный взгляд на классический подход

BEM 2.0 остаётся популярным методом для описания структуры стилей, оставаясь гибким и совместимым с ITCSS или CUBE CSS. Основная идея — чистота и предсказуемость. Это отличный инструмент для модульности и масштабируемости. Теперь вместо громоздких классов типа .btn__icon__wrapper__span используется осознанное написание стилей.

• .block — основной компонент
• .block__element — элемент внутри блока
• .block--modifier — модификатор блока


📌 CSS-архитектура — это баланс и осознанность, а не выбор одного подхода. В 2025 году крупные проекты используют гибридный подход (ITCSS, CUBE, BEM). Важно понимать цели, а не следовать шаблонам. Выбирай метод, удобный команде, а не модный.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🐳1
Фронтенд и AI: что интересного происходит в Яндексе

Бизнес-группа Поисковых сервисов и ИИ Яндекса приглашает на Yet Another Frontend Night 29 ноября. Главная тема — практическое использовании нейросетевых инструментов во фронтенде. Представители Яндекса расскажут, какие AI-технологии применяются, как эволюционировал цикл разработки и какие вызовы возникали при решении настоящих задач.

— 5 докладов от фронтенд-разработчиков Яндекса
— Активности с реальными кейсами от экспертов
— Дискуссии и много нетворкинга в приятной атмосфере

Меньше слов! Скорее регистрируйтесь, чтобы услышать топовые доклады:
Иван Артамонов, руководитель группы конверсионных инструментов в Яндекс Бизнесе, расскажет про преимущества AI-ассистентов
Павел Осташкин, старший разработчик интерфейсов в международной Рекламе, объяснит, как он со своей командой написал и встроил MCP в рабочие процессы и что из этого получилось
Валерий Баранов, AI-оптимист и тимлид группы технологий фронтенда в Яндекс 360, разберет инструменты управления контекстом во фронтенде и покажет, как MCP-серверы снижают галлюцинации и делают дизайн-систему AI-ready
Александр Иванков, руководитель группы развития инфраструктуры поисковых интерфейсов в Яндекс Поиске, поделится опытом разработки AI-помощника и подходами промпт-инжиниринга под разные роли
Андрей Дегтярев, разработчик интерфейсов в Яндекс Браузере, рассмотрит в докладе агентские сценарии по частям, чтобы наглядно показать, какие реальные задачи пользователя они решают

Где и когда: 29 ноября, 15:00, Москва, офис Яндекса на Льва Толстого
Yet Another Frontend Night пройдет только в offline-формате, трансляция не планируется.

Подробности и регистрация
3👍2😁2
💬 Чуть подробнее об ITCSS: порядок в хаосе каскада

Когда проект начинает расти, CSS превращается в настоящее болото: дубли, переопределения, !important-ы, и никто не понимает, почему одна карточка ломает кнопку. Тут на помощь приходит ITCSS (Inverted Triangle CSS), который решает эти проблемы структурой и приоритетами.

❗️ Суть подхода

В ITCSS стили делятся на несколько слоёв. Чем ниже слой, тем более специфичные стили и выше их приоритет. Такой подход помогает избежать конфликтов и делает код более предсказуемым. Структуру слоев я уже писал в посте выше. А вот пример структуры папок:

/src/styles/
├─ settings/
├─ tools/
├─ generic/
├─ elements/
├─ objects/
├─ components/
└─ utilities/


Почему это работает

• Легче предсказать каскад, стили не «воюют» между собой
• Удобно для масштабных проектов с десятками разработчиков
• Отлично комбинируется с BEM для организации структуры классов


📌 Минус этого подхода в том, что он может быть избыточен для небольших проектов. Но если у тебя есть дизайн-система, то ITCSS становится обязательным.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Forwarded from xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁261👍1
👏 BEM 2.0 — классика, которая остаётся актуальной

Последний на очереди старичок организации CSS. BEM (Block, Element, Modifier) — это подход, который прошёл через множество изменений в экосистеме CSS, но всё равно остаётся в центре внимания. Несмотря на то, что появились новые подходы, такие как SCSS, CSS-in-JS или Tailwind, BEM продолжает быть важным инструментом для поддержания структуры и читаемости кода.

ℹ️ BEM помогает организовать стили, деля их на блоки, элементы и модификаторы. Вот пример структуры:

<button class="btn btn--primary">
<span class="btn__icon"></span>
<span class="btn__text">Save</span>
</button>

.btn { padding: .5rem 1rem; border-radius: 4px; }
.btn--primary { background: blue; color: white; }
.btn__icon { margin-right: .5rem; }


Что такое BEM 2.0 и почему все еще актуален

• Простой и понятный DOM, который легко навигировать
• Лёгкость в рефакторинге компонентов
• Минимизация конфликтов стилей благодаря чёткой структуре
• Используй BEM вместе с другими архитектурными подходами, такими как ITCSS или CUBE
• Избегай глубоких цепочек классов, например .card__header__noscript — это уже лишнее
• Применяй BEM с токенами и дизайн-системами для лучшей совместимости
• Держи имена классов короткими и логичными


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

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍94👎4🐳1
OneCore — готовый backend «из коробки», который быстро и просто подключается к вашему проекту. Только ваш frontend и мощное API.

Что вы получаете после подключения:
• Headless CMS: страницы, настройки, формы, коллекции данных и другое
• CRM: заявки, статусы, история, экспорт, воронки
• Продвинутое API: фильтрация, поиск, пагинация, загрузка файлов, отправка форм
• Аналитика: отслеживание конверсий
• WebSocket-ивенты: появление новых заявок в реальном времени внутри сервиса
• Гибкость: работает с любым фронтендом — Vue, React, Nuxt, Next, Svelte и другими

Вы экономите бюджет, время и ускоряете разработку без потери качества.

Инструмент для разработчиков и студий, которые хотят масштабироваться, а не тратить ресурсы на backend.

Попробовать OneCore
6👍6🔥2
👏 <template> и <slot> — забытые герои фронтенда, которые заслуживают внимания

Мы все знаем и любим фреймворки, но стоит признать, что браузеры могут делать гораздо больше, чем нам кажется. И два элемента, которые часто остаются незамеченными, но могут значительно упростить жизнь разработчикам — это <template> и <slot>. Они позволяют создавать «мини-компоненты» прямо в браузере без необходимости в React, Vue или Svelte.

❗️ <template> — скрытая магия HTML

<!-- Элемент <template> используется для хранения фрагмента разметки, который не отображается на странице, пока его не вставят вручную с помощью JavaScript. Это идеальный инструмент для создания повторяющихся блоков разметки -->

<template id="card">
<div class="card">
<h3 class="noscript"></h3>
<p class="text"></p>
</div>
</template>

<noscript>
const tpl = document.querySelector('#card');
const clone = tpl.content.cloneNode(true);
clone.querySelector('.noscript').textContent = 'Hello';
document.body.appendChild(clone);
</noscript>


❗️ <slot> — магия контента в кастомных элементах

<!-- <slot> используется внутри кастомных элементов для вставки внешнего HTML-контента, что позволяет создавать полноценные UI-компоненты без внешних фреймворков, сохраняя семантичность и доступность контента, а также облегчая кастомизацию компонентов -->

<my-button>
<span>Click me</span>
</my-button>

<noscript>
class MyButton extends HTMLElement {
connectedCallback() {
this.innerHTML = `
<button class="btn">
<slot></slot>
</button>
`;
}
}
customElements.define('my-button', MyButton);
</noscript>


📌 Браузеры теперь такие умные, что даже сложные фреймворки не нужны! Всё благодаря Web Components, Islands, Partial Hydration и SSR. А всё это работает ещё эффективнее с этими двумя элементами — <template> и <slot>. Они помогают решать задачи, которые раньше решали только «маленькие» фреймворки, но без лишней нагрузки и заморочек.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153
Forwarded from xCode Journal
🙄 И снова об HR

HR-ы в ByteDance требуют закрывать глаза на интервью — так они могут быть уверены, что кандидат не подсматривает ответы ИИ.

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2732