Frontender Libs - обзор библиотек JS / CSS
8.3K subscribers
2.04K photos
735 videos
3 files
243 links
Админ, сотрудничество, реклама: @seniorFrontPromo, @maria_seniorfront

Менеджер по рекламе: @Spiral_Yuri

Купить рекламу: https://telega.in/c/sWebDev
Download Telegram
Прощай, Zone.js: ускоряем Angular с помощью Signal API

Механизм Zone.js в Angular часто приводит к лишним проверкам и падению производительности из-за глобального отслеживания изменений. Статья разбирает, как новый Signal API и Zoneless-подход решают эту проблему. На примерах и замерах производительности показывается, как точечная реактивность сигналов устраняет избыточные перерисовки и ускоряет приложение.

👉 @sWebDev
2
Media is too big
VIEW IN TELEGRAM
Spooky Spectral Ghost

Интерактивная сцена с призраком и спектральными эффектами на Three.js.

👉 @sWebDev
2👍1
Chocolat

Chocolat — адаптивная лайтбокс-галерея для изображений. Она позволяет создавать всплывающие галереи с поддержкой навигации и полноэкранного режима.

👉 @sWebDev
👍2
Поведение при отказе в доступе

Что отобразит прокси-компонент для контроля доступа, если у пользователя нет требуемой роли?

Забыли? Вернитесь к посту от 18.08.2025.

👉 @sWebDev
2
Ваше первое резюме тоже выглядело беспомощно?

👍 – Очень.

❤️ – Оно до сих пор такое.

🤔 – Нет, сразу было норм.

👉 @sWebDev | #юмор
9
Адаптивный интерфейс

Хук useMediaQuery отслеживает media-запросы для адаптации интерфейса. Для корректной работы в SSR, где объект window недоступен и нельзя определить размер экрана, хук принимает начальное значение (defaultValue). Оно используется при рендеринге на сервере, а после гидратации на клиенте состояние обновляется до реального.

import { useState, useEffect } from 'react';

function useMediaQuery(query: string, defaultValue = false) {
const [matches, setMatches] = useState(defaultValue);

useEffect(() => {
const mediaQueryList = window.matchMedia(query);

const listener = (event: MediaQueryListEvent) => setMatches(event.matches);

// Устанавливаем начальное значение после монтирования
setMatches(mediaQueryList.matches);

mediaQueryList.addEventListener('change', listener);
return () => mediaQueryList.removeEventListener('change', listener);
}, [query]);

return matches;
}


👉 @sWebDev
👍3
Media is too big
VIEW IN TELEGRAM
Heart Animation

Анимация частиц в форме сердца на Three.js и GSAP.

👉 @sWebDev
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Кто вы в этой сцене?

👍 – Джун.

❤️ – Мидл.

🤔 – Сеньор.

👉 @sWebDev | #юмор
3👍3🤔1
Bliss

Библиотека содержит набор легковесных хелперов, делающих работу с DOM на чистом JavaScript более лаконичной. Она расширяет нативные элементы новыми методами для использования синтаксиса в стиле jQuery без дополнительных зависимостей и обёрток.

👉 @sWebDev
2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Whimsical SVG hover animation

Анимация SVG-контура при наведении на GSAP.

👉 @sWebDev
2👍1
Angular повзрослел — и лучшее ещё впереди

За Angular долгое время тянулся шлейф репутации сложного и многословного фреймворка. Статья рассказывает, как недавние нововведения, такие как standalone-компоненты, Signals и новый синтаксис для потоков управления, изменили эту ситуацию. Автор показывает, почему современный Angular стал значительно проще и дружелюбнее к разработчику.

👉 @sWebDev
2👍1👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Decoder Text Animation

Анимация текста с эффектом декодера на GSAP.

👉 @sWebDev
👍31
This media is not supported in your browser
VIEW IN TELEGRAM
Color Thief

Библиотека Color Thief извлекает цветовую палитру из изображений. Она содержит методы для получения доминирующего цвета или набора репрезентативных оттенков. Инструмент также будет полезен для динамической стилизации интерфейса.

👉 @sWebDev
3
Событийная модель браузера

Почему в реализации хука для отслеживания внешних кликов предпочтительно использовать событие mousedown вместо click?

Забыли? Вернитесь к посту от 25.08.2025.

👉 @sWebDev
3
Хотели в детстве быть программистом?

👍 – Да, мечтал.

❤️ – Нет, жизнь сама заставила.

🤔 – Я до сих пор не понял, кем хотел стать.

👉 @sWebDev | #юмор
🤔18👍61
Декларативная условная стилизация

Для условного применения inline-стилей в React часто создают объект стилей с помощью if или тернарных операторов. Существует более лаконичный, декларативный подход с использованием spread-оператора (...) и логического оператора &&.

Механизм основан на том, что выражение условие && { стиль: 'значение' } вернет либо объект стилей, если условие истинно, либо false, если ложно. React при разворачивании (spread) falsy-значений (таких как false, null или undefined) внутри объекта просто игнорирует их, не добавляя никаких свойств.

import React from 'react';

function AlertMessage({ text, isActive, isUrgent }) {
const baseStyles = {
margin: '10px 0',
padding: '15px',
borderRadius: '4px',
transition: 'all 0.2s ease-in-out',
};

const finalStyles = {
...baseStyles,
...(isActive && { background: '#f0f0f0' }),
...(isUrgent && { background: '#ffdddd', border: '1px solid red' }),
};

return <div style={finalStyles}>{text}</div>;
}


👉 @sWebDev
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Infinite Canvas

Интерактивный бесконечный холст с drag-and-drop на Canvas API и JavaScript.

👉 @sWebDev
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Делали так?

👍 – Пару раз прокатило.

❤️ – Я даже джуном прикинуться не могу.

👉 @sWebDev | #юмор
8🤔1
Curtains.js

Библиотека использует WebGL для превращения DOM-элементов, таких как изображения и видео, в интерактивные 3D-плоскости. Она значительно упрощает работу с шейдерами для добавления к обычным HTML-элементам сложных визуальных эффектов.

👉 @sWebDev
3