21509
Все самое полезное для фронтенда в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/77178ed4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
🔥 Топ-вакансий недели для фронтендеров
Middle Frontend разработчик — от 170 000 ₽, гибрид (Москва)
Frontend Developer Pixi — 3 000 — 5 500 $, удаленно
Frontend разработчик — от 150 000 ₽, офис (Краснодар)
➡️ Больше офферов в канале: @jsdevjob
🐸 Библиотека фронтендера
🧠 Бесплатный курс по алгоритмам на JavaScript
Базовый курс для тех, кто уже пишет на JS и хочет подтянуть алгоритмы перед собеседованиями.
Внутри:
— Big O
— сортировки
— графы
— структуры данных
— деревья
🛠 Быстрая проверка CSS прямо в DevTools
Необязательно менять код проекта, чтобы проверить CSS. Можно добавить inline-стиль прямо в DevTools и сразу увидеть результат.
🔜 Как найти:
— Chrome / Edge: Styles → element.style
— Firefox: Rules → element
— Safari: Styles → Style Attribute
Полезно, когда нужно быстро понять:
— сработает ли CSS-свойство
— перебьёт ли оно текущий каскад
— почему правило не применяется
— как элемент поведёт себя без правки исходников
Туц-туц-туц 🎵 Слышите?
Это звуки Техно-Квартирника, регулярной встречи от сообщества разработчиков интерфейсов (фронтенд) Альфа-Банка — A?.Frontend.
27 мая в 19:00 в режиме техно будем разбирать примеры и кейсы, как использовать ИИ-агенты в разработке интерфейсов:
➡️ «Чистая архитектура frontend-приложений и причём здесь ИИ-агенты?»
Илья Агапов, технический лидер разработки, Альфа-Банк
Данила Звягин, ведущий разработчик, Альфа-Банк
➡️ «Как я поднял ИИ-агента и снова стал высыпаться: OpenClaw, скиллы и корпоративная рутина»
Роман Троицкий, старший разработчик интерфейсов (frontend), Сбер
➡️ «Как ИИ ломают привычную модель веб-безопасности?»
Анастасия Егорова, разработчик интерфейсов (frontend), CozyFrontend
➡️ «AI как QA-инженер: механики тестирования с помощью агентов для frontend-инженеров»
Илья Шорин, разработчик интерфейсов (frontend), Авито Товары
После каждого доклада будут дискуссии самых горячих трендов, а вечер завершим вот чем:
🗣 Консультациями по ИИ-агентам
💿 Диджей-сетом
🤝 Нетворкингом
Регистрируйтесь по ссылке!
Реклама. АО «Альфа-Банк», ИНН 7728168971. Erid 2VtzqvYFDNp
🐸 Библиотека фронтендера
#code_challenge
🐸 Библиотека фронтендера
#pixel_pause
⭐️ А что если тестировать Vue-компоненты прямо в браузере — без Playwright, Vitest и Node?
Автор статьи показывает browser-native подход к frontend testing: Vue-компоненты монтируются прямо в DOM, а тесты работают с интерфейсом без отдельного JS-runtime.
Внутри:
— рендер компонентов в тестовом DOM
— waitFor() вместо случайных sleep()
— работа с form events вручную
— reset fixture-данных через API
— coverage через Chrome DevTools
🤔 Вопрос с собеседования
Почему чрезмерное следование DRY может навредить проекту?
👇 Правильный ответ (нажми, чтобы прочитать):
Если слишком рано объединять похожий код в одну абстракцию, система становится сложнее:
— появляются огромные универсальные функции
— растёт связанность
— изменения в одном месте ломают другие сценарии
Иногда два похожих блока кода проще и безопаснее поддерживать отдельно, чем тащить преждевременную abstraction.
❌ Плохой DRY:
handleUser(type, data, options, flags)
✅ Нормальный подход:
createUser()
updateUser()
deleteUser()
🔜 Идеальный короткий ответ:
DRY нужен для устранения дублирования знаний и логики, а не любого похожего кода. Преждевременные абстракции часто усложняют поддержку сильнее, чем небольшое дублирование.
👍 — знал/а
🔥 — стало понятнее
💼 Щелкаешь такие задачи как орешки? Найди проект с достойной зарплатой тут
🐸 Библиотека фронтендера
#career_merge
🐸 Библиотека фронтендера
#pixel_pause
🔥 Топ-вакансий недели для фронтендеров
Senior TypeScript — от 440 000 ₽, удаленно
Frontend-разработчик (TypeScript) — от 110 000 до 200 000 ₽, офис (Санкт-Петербург)
Junior Frontend Developer (React/Angular/Vue) — от 50 000 до 100 000 ₽, удаленно (Москва)
➡️ Больше офферов в канале: @jsdevjob
🐸 Библиотека фронтендера
⚡️ Astro 6.2
Что нового:
➖ experimental SVG optimizer API
➖ JSON logger и кастомные логгеры для structured logging
➖ experimental_getFontFileURL() для работы со шрифтами при генерации OG-image
➖ alpha Astro 7 с Vite 8
➖ Rust compiler теперь станет дефолтным
➖ allowedHosts для preview server
➖ новый jsx-режим для compressHTML
Astro продолжает двигаться в сторону более быстрых билдов, tooling для AI/coding agents и гибкой asset-инфраструктуры.
🔗 Источник
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#release_digest #astro
😕 TypeScript невозможно нормально выучить только через туториалы
Пока не начинаешь писать сложные generic-типы, разбирать infer, conditional types и narrowing — кажется, что TS заканчивается на interface и type.
🔤 TypeHero — платформа для практики TS через реальные задачи. Можно решать готовые челленджи, прокачивать понимание type system и даже публиковать собственные задачи.
Особенно полезно тем, кто:
✅ готовится к frontend-собесам
✅ хочет лучше понимать TS inference
✅ постоянно натыкается на странные ошибки типов
✅ хочет выйти за пределы «базового TypeScript»
🔗 Ссылка
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#stack #typescript
🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев
Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами.
🏃♀️ Уже 14 мая Эмиль проведет открытый вебинар!
Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало».
🗓 Когда: 14 мая в 19:00 (Мск)
Почему Эмиля стоит послушать:
🟣 8+ лет в разработке (Backend и Frontend)
Прошел путь от фулстека до Backend Platform Developer в SMIT.Studio.
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.
🟥 Визуализация методов массивов в JavaScript
map, filter, slice, flat, push, pop — большинство знает их по названию, но на практике многие всё ещё путаются:
что мутирует массив, что возвращает новый, а что вообще меняет тип данных.
🔴 На шпаргалке — наглядное сравнение популярных array methods: как именно меняется массив после каждого вызова.
Особенно полезно:
— джунам
— перед собеседованием
— чтобы быстро освежить базу по JS
🐸 Библиотека фронтендера
#code_challenge
👩💻 React лучше всего учится не по туториалам, а через pet-проекты
Нашли большой репозиторий с идеями React-проектов разного уровня — от простых счётчиков и Todo до SaaS Dashboard, WebRTC и AI Chat UI.
Внутри проекты разделены по уровням:
🟢 Beginner
🟡 Intermediate
🔴 Advanced
Полезно, если:
— не знаете, что сделать для портфолио
— хотите практиковать React на реальных задачах
— ищете идеи для pet-проекта
— готовитесь к frontend-собеседованиям
🤔 Вопрос с собеседования
Что такое миксины в CSS-препроцессорах?
👇 Правильный ответ (нажми, чтобы прочитать):
Миксины — это переиспользуемые наборы CSS-правил в препроцессорах вроде SCSS или LESS. Их можно подключать в разных местах и передавать параметры, чтобы не копировать одинаковые стили вручную.
🔜 Например, в SCSS:
@mixin flex-center($gap: 0) {
display: flex;
justify-content: center;
align-items: center;
gap: $gap;
}
.card {
@include flex-center(16px);
}
После компиляции правила из миксина попадут в итоговый CSS внутри .card.
⚠️ Важно:
Миксины — не то же самое, что @extend. @extend объединяет селекторы, а миксины вставляют набор правил в то место, где их вызвали.
🔜 Идеальный короткий ответ:
Миксины — это переиспользуемые CSS-шаблоны в препроцессорах. Они помогают выносить повторяющиеся стили и подключать их в нужных местах, в том числе с параметрами.
👍 — знал/а
🔥 — стало понятнее
💼 Щелкаешь такие задачи как орешки? Найди проект с достойной зарплатой тут
🐸 Библиотека фронтендера
#career_merge
Темным временам пришел конец 😑
🐸 Библиотека фронтендера
#pixel_pause
⚠️ GitHub Actions cache poisoning — опасная проблема современного open source
Во многих репозиториях кэш в GitHub Actions общий для проверки PR и релизного процесса.
Из-за этого атакующий может:
— отправить вредоносный PR
— записать заражённый кэш
— дождаться сборки релиза
— выполнить код в CI с доступом к публикации пакетов
🖍 formatToParts() — недооценённый метод в Intl.NumberFormat
Обычный .format() возвращает готовую строку:
"$1,234.56"
formatToParts() разбивает число на отдельные части:
new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD"
}).formatToParts(1234.56)
[
{ type: "currency", value: "$" },
{ type: "integer", value: "1" },
{ type: "group", value: "," },
{ type: "integer", value: "234" },
{ type: "decimal", value: "." },
{ type: "fraction", value: "56" }
]
👩💻 VS Code shortcuts, которые ускоряют работу
🔵 Быстрый переход к файлу по названию.
Ctrl + P
Ctrl + Shift + O
Ctrl + G
Alt + ↑ / ↓
Ctrl + Shift + L
F2
Ctrl + .
🛡️ HTML Sanitizer API: безопасная вставка HTML без лишних костылей
innerHTML давно остаётся одной из самых опасных точек во frontend: если вставить пользовательский HTML без очистки, можно получить XSS.
🈂️ Новый HTML Sanitizer API переносит часть этой работы на браузер. Например, setHTML() вставляет HTML безопасно по умолчанию: удаляет <script>, inline-обработчики вроде onerror и другие XSS-опасные части.
В статье разбирают:
— почему innerHTML опасен
— чем setHTML() отличается от innerHTML
— какие есть safe/unsafe методы
— зачем нужен parseHTML()
— как применять API в React
— почему DOMPurify пока всё ещё нужен как fallback
🔗 Как сделать эффект «матового стекла» в CSS
Glassmorphism до сих пор активно используют в:
— dashboard-интерфейсах
— модалках
— sidebar
— карточках
— landing page
Основной эффект создаётся через backdrop-filter.
.card {
background: rgba(255, 255, 255, 0.12);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255,255,255,0.25);
border-radius: 20px;
box-shadow: 0 20px 50px rgba(0,0,0,0.25);
}
🌑 Новый API для изоляции JavaScript-кода
В TC39 продолжают работу над ShadowRealm — API для запуска JavaScript в изолированном окружении с собственным globalThis, built-in объектами и отдельным scope.
const shadow = new ShadowRealm();
shadow.evaluate(` globalThis.secret = "shadow"; `);
console.log(globalThis.secret); // undefined
— изолировать сторонние библиотеки
— уменьшать pollution глобального scope
— запускать sandbox/plugin-логику
— делать «чистые» окружения для тестов
— безопаснее работать с внешним кодом
📎 6 полезных CSS-фич для современного frontend
В карточках собрали CSS-сниппеты, которые реально встречаются в production и помогают писать более гибкий интерфейс без лишних костылей.
➖ Полезно как для джунов, так и для тех, кто давно не следил за новыми возможностями CSS.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme
🎯 Большинство CSS-багов начинаются не со сложных фич
Обычно всё ломается из-за мелочей:
— блок внезапно стал шире
— z-index перестал работать
— shorthand сбросил половину стилей
— !important начал воевать сам с собой
🤔 Почему ARIA может навредить интерфейсу
ARIA часто воспринимают как «быстрый способ сделать accessibility». Но проблема в том, что неправильные роли могут запутать screen reader сильнее, чем их отсутствие.
🔤 Например:
html <div role="button">Save</div>
🧩 Прозрачный <image> без градиентных костылей
В CSS готовят функцию image(). Она позволит описывать одноцветное или прозрачное изображение как полноценное значение типа <image>.
Сейчас для «пустой картинки» часто используют обходной путь:
css background-image: linear-gradient(transparent);
css background-image: image(transparent);
🐸 Библиотека фронтендера
#pixel_pause
📌 Полезные JS-инструменты, о которых знают не все
Во frontend быстро накапливается рутина:
— ручные API-клиенты
— синхронизация state с URL
— мёртвый код
— бесконечные ESLint-конфиги
— валидация данных в нескольких местах сразу