Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js
21.7K subscribers
2.86K photos
198 videos
45 files
5.16K links
Все самое полезное для фронтенда в одном канале.

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

Учиться у нас: https://proglib.io/w/77178ed4

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

РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
Download Telegram
🔥 Next.js 16: Server Components вместо useEffect

Проблема (1 картинка):

'use client' + useEffect + fetch — данные загружаются на клиенте. Медленно, нужны loading states вручную, нет кэша.

Решение (2 картинка):

Server Components — просто async/await в компоненте. Данные на сервере, кэширование через next: { revalidate }.

Что это даёт:

🟢 Быстрее — данные приходят с HTML
🟢 Меньше JS — 0 байт на клиенте для фетчинга
🟢 Умный кэш — revalidate: 60 = обновление раз в минуту
🟢 Проще код — никаких useState/useEffect

Бонус-паттерны:

Параллельный фетчинг:


const [posts, users] = await Promise.all([
fetch('/api/posts'),
fetch('/api/users')
])


Server Actions:


export async function createPost(data) {
'use server'
await db.posts.create(data)
revalidatePath('/posts') // Инвалидация кэша
}


Streaming:


<Suspense fallback={<Skeleton />}>
<Posts />
</Suspense>


⚠️ Fetch больше не кэшируется по умолчанию. Явно указывайте next: { revalidate } или cache: 'force-cache'.

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

#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰7🔥4🥱32
💡 Как работает CSS Anchor Positioning

Забудьте про Popper.js — браузер теперь умеет привязывать элементы сам. Тултипы, дропдауны, попаверы без единой строки JavaScript.

➡️ В карточках:

— как anchor() вычисляет координаты относительно якоря
— механизм автоматического fallback при overflow
— почему это в 10× быстрее JS-библиотек
— живые примеры с кодом

🔗 Альтернатива для остальных браузеров

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63👍2🥰1
🤔 Нужен ли CSS псевдо-класс, которого не существует

У нас есть :open для элементов вроде <details> в открытом состоянии. Логично, что должен быть и :closed для закрытого, правда?
Но вот незадача: можно же просто написать :not(:open). Зачем плодить сущности?

С другой стороны — что проще прочитать: :closed или :not(:open)? Думаете в отрицаниях — это нормально?
CSS Working Group три года спорила об этом вопросе, и финал вас удивит.

😮 Спойлер: консенсус развалился, и :closed отправили в небытие... пока что.

История о том, как простое решение может стать философской дилеммой. Читайте, если хотите узнать, почему иногда меньше — это действительно больше 🔜

🔗 Ссылка на статью

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

#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2🥰2
Media is too big
VIEW IN TELEGRAM
🔆 Pikaday: date picker'ы не нужны

Крутой гайд о том, что JavaScript календари обычно избыточны.

Лучшие альтернативы:

ℹ️ Нативный <input type="date"> — браузер всё сделает сам

ℹ️ Раздельные поля (день/месяц/год) — удобнее для памятных дат

ℹ️ Select'ы — для ограниченного набора вариантов

ℹ️ Masked input (DD/MM/YYYY) — быстрее, чем календарь

Сложные UI = больше ошибок и брошенных форм. Простота побеждает.

🔗 Ссылка

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#readme #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😁1
👻 Мемоизация в React

Мемоизация полезна только тогда, когда реально уменьшает количество рендеров. На практике же её часто применяют «по привычке», усложняя код и не решая проблему.

➡️ В серии карточек разбираем главное:

— когда useMemo и useCallback действительно нужны
— почему мемоизация «везде подряд» даёт обратный эффект
— как увидеть лишние рендеры и измерить их в DevTools
— как профилировать приложение, чтобы оптимизировать по фактам

📎 Дополнительно рекомендуем посмотреть:

Доклад Марка Эриксона «React Rendering Behavior» — чётко объясняет, почему компоненты рендерятся и как реально оптимизировать без лишних мемоизаций.

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

#blueprint
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5🥰2👍1
🔥 На рынке сейчас математика — снова король: AI растёт быстрее, чем вузы успевают обновлять программы. Мы же перестраиваем курс под индустрию мгновенно.

Хочешь наконец разобраться в математике для DS, а не гуглить «что такое градиент» перед собесом?

Новый курс «Математика для разработки AI-моделей» — это 8 недель плотной подготовки, свежая программа и только актуальные темы, которые реально нужны в ML.

Что в курсе:

→ линал, производные, градиенты, вероятности, статистика;
→ практика на Python и 3 большие ДЗ;
→ живые вебинары + разбор ваших вопросов;
→ финальный мини-проект, который можно положить в портфолио;
→ доступ к материалам и чат с экспертами.

Для старта нужны только школьная математика и базовый Python.

🎁 Бонусы ноября:

— скидка 40% до 30 ноября;
— «Базовая математика» в подарок при оплате;
→ бесплатный тест уровня математики.

👉 Записывайся на курс
🥰4
🔥 Debounce на одной строке

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


const debounce = (fn, ms) => {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => fn(...args), ms);
};
};

// Использование
const handleSearch = debounce((value) => {
console.log('Поиск:', value);
}, 300);

// В React
<input onChange={(e) => handleSearch(e.target.value)} />


Когда использовать:
— Автокомплит и live-поиск
— Обработка resize/scroll событий
— Валидация форм при вводе
— Любые частые события

💡 Почему это работает:
При каждом новом вызове старый таймер сбрасывается и создаётся новый. Функция выполнится только когда пройдёт 300ms без новых событий.

🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#readme #js #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥83🥰3
📦 Container Queries — респонсив по контейнеру, а не по экрану

Проблема: карточка в гриде, сайдбаре и модалке выглядит по-разному. Media queries не помогут — они смотрят на viewport.

ℹ️ Кейсы:

— Виджеты в дашбордах
— UI-киты с гибкими компонентами
— Карточки в разных местах

🟡 Юниты: cqi, cqw — как vw, но для контейнера

⚙️ Поддержка: Chrome 105+, Safari 16+, Firefox 110+

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

#hotfix #css
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1
🎄 Скоро Новый год, а ты всё ещё не в бигтехе?

Если твой путь лежит в ML, DS или AI, то одна вещь решает всё: математика. Без неё — хоть три проекта сделай, хоть сотню туториалов посмотри — на собесе тебя всё равно вернут на «а что такое градиент?»

🔥 Экспресс-курс «Математика для разработки AI-моделей» — 8 недель, чтобы закрыть базу раз и навсегда.

Что внутри:

🔘 живые вебинары, где можно задавать вопросы экспертам
🔘 записи лекций + доступ к материалам
🔘 практические задания на Python и финальный мини-проект с фидбеком
🔘 программа обновлена в ноябре 2025
🔘 2 месяца только нужного — без воды
🔘 достаточно школьной математики и базового Python

🎁 Бонусы ноября:

→ 40% скидка до 30 ноября
→ при оплате до конца месяца — курс «Базовая математика» в подарок
→ бесплатный тест, чтобы узнать свой уровень математики

👉 Хочу стартовать
🥰1