Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js
21K subscribers
3.66K photos
338 videos
86 files
5.94K links
Все самое полезное для фронтенда в одном канале.

Наши курсы: https://clc.to/WV2U4g

По рекламе: @proglib_adv

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
Download Telegram
⭐️ Что стоит знать про работу с массивами и объектами

Работа с массивами и объектами — не только про хранение данных, но и про правильную трансформацию, фильтрацию и аккумулирование значений, соблюдая иммутабельность.

Что в карточках:

➡️ Что такое иммутабельность и зачем её соблюдать

➡️ Как работают методы массивов map, filter и reduce

➡️ Конкретный пример кода на reduce с объяснением аргументов и отличий от forEach


📌 Для практики: попробуйте фильтровать пользователей, создать массив имён и посчитать сумму через reduce — классические кейсы на собеседованиях.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
📱 Отключайте автокапитализацию там, где она мешает

Мобильные Chrome и Safari могут автоматически делать первую букву заглавной. Для обычного текста это удобно, но в полях с логином, email, промокодом или техническим значением такая помощь только увеличивает число ошибок.

Добавьте атрибут:


<input autocapitalize="off">


Он подскажет браузеру, что при вводе не нужно автоматически менять регистр букв.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
🔊 936 звуков для интерфейсов в одной библиотеке

Open-source-библиотека собрала звуковые эффекты для кнопок, уведомлений, загрузки, ошибок, успешных действий, переключателей и других состояний интерфейса.

Все звуки распределены по 12 стилям — среди них Minimal, Glass, Sci-Fi, Mechanical, Zen и Retro. Это помогает выдержать единый звуковой стиль во всём продукте.


⚡️ Звуки можно подключать вручную или использовать готовый промпт, чтобы AI-агент сам подобрал подходящий эффект.

Полезная находка для SaaS, игр и интерактивных интерфейсов. А разобраться, как внедрять такие решения в реальные проекты с помощью AI-инструментов, можно на курсе «ИИ для разработчиков» 👋

🔗 Ссылка

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#stack #ux_review
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤔2🥰1
Кажется, у онлайн-обучения появился формат, которого давно не хватало 👇
🥰3
🤔 У большинства разработчиков уже есть подписки на IDE, GitHub Copilot, Claude, ChatGPT или облачные сервисы.

Логично, что обучение тоже постепенно приходит к той же модели: не покупать отдельный курс под каждую новую тему, а иметь доступ ко всей библиотеке и выбирать, что актуально именно сейчас.


Такой формат недавно появился и в Proglib Academy. Вместо одного курса — доступ сразу ко всей библиотеке и новым материалам, которые появляются в подписке 😎

🔗 Подробнее

🏃‍♀️ Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰2
🔑 Cортировка по нескольким ключам

Когда нужно отсортировать массив объектов сразу по нескольким полям — вместо вложенных if можно сделать так:


const sortBy = (arr, keys) => [...arr].sort((a, b) =>
keys.reduce((res, k) => res || (a[k] > b[k] ? 1 : a[k] < b[k] ? -1 : 0), 0)
);


Где пригодится:

— Сортировка таблиц и списков в UI;
— Подготовка данных из API;
— Фильтры («сначала по категории, потом по цене»).

reduce + sort = компактный способ заменить кучу if-else и делать гибкую сортировку по любым ключам.


🐸📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#readme #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🥰2
📖 Под капотом браузера: баги гидрации

SR и гидрация обещают быстрый рендер, но на деле фронтендеры часто сталкиваются с расхождениями между сервером и клиентом.

➡️ В карточках — разберём, как работает процесс, где появляются баги и как их избежать.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64🥰3
This media is not supported in your browser
VIEW IN TELEGRAM
😧 Совет по HTML: как разом отключить сразу несколько полей формы

Достаточно добавить атрибут disabled к тегу `<fieldset>` — и все элементы формы внутри него станут неактивными автоматически, без необходимости прописывать это для каждого по отдельности.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍2🥰2
🤔 Вопрос с собеседования

Что произойдёт с состоянием компонента, если изменить его key?


<UserForm key={userId} userId={userId} />


Допустим, userId меняется с 42 на 43.

❤️ — состояние сохранится, изменятся только props
🔥 — React пересоздаст компонент, и state сбросится
👍 — state сбросится только при использовании React.memo

👇 Правильный ответ (нажми, чтобы прочитать):

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

И да: key нужен не только для списков. Его можно намеренно использовать, например, чтобы очистить форму при переключении на другого пользователя.


💼 Щелкаешь такие задачи как орешки? Найди проект с достойной зарплатой тут

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥323👍2🥰1
35 млн точек в браузере — и около 72 FPS

ChartGPU — библиотека для визуализации больших датасетов через WebGPU вместо Canvas2D или WebGL.

⬇️Поддерживает стриминг данных,
⬇️несколько графиковна одном
⬇️GPUDevice, GPU-decimation и
⬇️даже 3D-серии. Авторы
⬇️показывают бенчмарк с 35
⬇️млн точек примерно при 72
⬇️FPS.

Особенно интересно для дашбордов, мониторинга, финтеха и observability-интерфейсов, где обычный Canvas уже становится узким местом.

❗️ Но есть важное ограничение: fallback на Canvas/WebGL нет, поэтому поддержку WebGPU нужно проверять отдельно.

🔗 Ссылка на GitHub

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🥰2
🎯 Interest Invoker API — тултипы без единой строчки JS

Раньше, чтобы показать поповер по ховеру, нужен был JavaScript. Теперь — достаточно HTML.

➡️ Как работает:

interesttarget связывает элемент-триггер и поповер. Браузер сам обрабатывает hover, focus или long-press и показывает подсказку.

Можно совмещать с Popover API и Anchor Positioning для точного позиционирования.

⚠️ Поддержка:

Пока экспериментальная — работает в Chromium-браузерах (Chrome 135+, Edge 135+). В Firefox и Safari API ещё не реализован, поэтому стоит использовать фолбэк или JS-вариант для совместимости.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#readme #html
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
💬 Закрепляем скролл чата внизу без JavaScript

С помощью overflow-anchor можно обойтись без MutationObserver и scrollTo():


<div id="scroller">
...
<div id="anchor"></div>
</div>



#scroller * { overflow-anchor: none; }
#anchor { overflow-anchor: auto; height: 1px; }


Отключаем scroll anchoring для содержимого и оставляем его только на элементе в конце списка. Браузер использует его как якорь и удерживает скролл у нового контента.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥰2🌚2
📐 Делаем fluid-значения в CSS предсказуемыми

clamp() отлично подходит для адаптивных размеров, но результат может быть вроде 19.7px или 143.2px.

Функция round() позволяет привязать вычисленное значение к нужному шагу:


.title {
--size: clamp(1rem, 1rem + 2cqw, 2rem);
font-size: round(down, var(--size), 4px);
}


Теперь размер будет двигаться по шагам: 16px → 20px → 24px → 28px → 32px. Можно использовать up, down, nearest или to-zero.

Особенно полезно для типографики, spacing и привязки элементов к layout grid.

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
🦊 Firefox 154: новые возможности CSS

🈶 sibling-index() и sibling-count() — позволяют получить позицию элемента среди соседей и их общее количество. Удобно, например, для динамических эффектов и декоративных раскладок.

🈶 text-box — сокращённый способ управления вертикальными отступами текста через text-box-trim и text-box-edge. Особенно полезно для точного выравнивания текста.

Теперь обе возможности доступны во всех основных браузерах.

А в экспериментальном режиме Firefox 154 также получил progress() — ещё один интересный шаг в сторону более гибной fluid-типографики.

🔗 Источник

📍 Навигация: [Вакансии]

🐸 Библиотека фронтендера

#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63🥰1🎉1
🔥 — 1 2 3
❤️ — undefined undefined undefined
🥰 — 3 3 3
🤔 — 0 1 2

🐸 Библиотека фронтендера

#code_challenge #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰7119🔥4🤔1