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
🔫 Как сократить код, не теряя читаемости?

«Меньше кода» — хорошо, но важно понимать, что это не означает сокращение строк любой ценой. Главная цель здесь — ясность и простота, а не сделать код короче. Давайте разберёмся, как можно уменьшить количество кода, не жертвуя его качеством.

Не бойтесь удалять лишнее
Каждая функция и условие — это потенциальная точка отказа. Если код не добавляет ценности и не решает задачу, то его лучше удалить. Поддержка меньшего объёма кода позволяет сосредоточиться на более важных аспектах и упрощает развитие проекта. Меньше кода — значит меньше проблем в будущем.

• Повторение — не всегда плохо
Когда в коде появляются 2-3 одинаковые строки, не спешите их абстрагировать. Часто абстракции ради экономии пары строк только делают код сложнее для восприятия. Правило простое: «Не абстрагируй раньше времени, абстрагируй умно». Если повторение не вызывает затруднений, оставьте его.

• Используй возможности JavaScript
Есть ситуации, когда можно заменить несколько строк на одну — и при этом не потерять читаемости. Не бойтесь использовать тернарные операторы, если они действительно упрощают понимание логики. Главное — одна мысль в одну строку.

// Вместо:
if (isAdmin) return 'admin'
else return 'user'

// Можно:
return isAdmin ? 'admin' : 'user'


• Компоненты должны быть короткими
Если React-компонент начинает занимать больше 50 строк, подумайте, не пора ли его разделить. Логику можно вынести в хук, а часть верстки — в отдельный подкомпонент. Каждый компонент должен выполнять одну задачу, чтобы код оставался читаемым и легко поддерживаемым.

• Подход как у редактора

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


📌 Меньше кода — это не минимализм, а ясность и лаконичность. Когда через месяц работы вы открываете свой код и не хотите переписать его, значит, вы достигли цели. Секрет не в том, чтобы сделать код короче, а в том, чтобы он был простым и понятным.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82👎2
👩‍🎨 TypeScript Decorators: Мощный инструмент для улучшения кода

В TypeScript 5+ добавили декораторы — это такие штуки, которые делают код понятнее и проще поддерживать. Они похожи на middleware, но работают с классами, методами, полями или параметрами, не ломая логику программы.

❗️ Пример кода:

function Log(target: any, key: string, denoscriptor: PropertyDenoscriptor) {
const original = denoscriptor.value;
denoscriptor.value = function (...args: any[]) {
console.log(`Call: ${key}(${args.join(', ')})`);
return original.apply(this, args);
};
}

class UserService {
@Log
getUser(id: number) {
return { id, name: 'Alice' };
}
}

new UserService().getUser(42);
// → Call: getUser(42)


Где применяют декораторы на фронтенде?

— Логирование и аналитика. Декоратор @Log записывает вызовы метода getUser, логируя параметры и результат. Это позволяет мониторить вызовы без изменения их логики. Декораторы, такие как @Log, @Track и @MeasureTime, используются для сбора статистики.

— Валидация и проверка аргументов. С помощью декораторов типа @Validate можно автоматически проверять входные данные. Проверка будет происходить автоматически при вызове метода, без дополнительных шагов.

— DI / инъекция зависимостей. Многие фреймворки, такие как Angular и NestJS, активно используют декораторы для инъекции зависимостей (@Injectable, @Component).

— Access control / Guard’ы. Декораторы также могут применяться для контроля доступа, например, @RequireAuth для проверки авторизации перед доступом к страницам или API.

TypeScript преобразует декораторы в вызовы функций, получающих метаданные элементов. Современный синтаксис декораторов основан на ECMAScript proposal и позволяет использовать несколько декораторов для одного элемента, выполняющихся сверху вниз.


📌 Декораторы убирают дублирование и делают API понятнее. С их помощью можно использовать одно и то же поведение в разных местах, не засоряя бизнес-код техническими деталями. В итоге код становится чище, а архитектура гибче.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥3👎1🐳1
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