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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
Download Telegram
⚡️ Каждый раз, когда DevTools открывает исходный TypeScript вместо bundle.min.js, он использует Source Maps

Но как браузер понимает, что ошибка из минифицированного файла соответствует конкретной строке в вашем исходном коде?

Разбираем, как это работает под капотом.

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

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

#under_hoow
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍4🥰1
🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru

Proglib.аcademy вместе с cloud․ru провели вебинар, где разобрали реальные боли проектирования автономных систем. Вы просили запись встречи — она уже в открытом доступе!

Что внутри:

— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.

👉 Посмотреть запись можно тут:
VK
YouTube
3🥰2
💡 Главное правило для нового кастомизируемого <select>

Если используете кастомный <select> с иконками, цветными плашками или изображениями, не убирайте текст из <option>.

Текст нужен сразу по трём причинам:

1️⃣ выбранный вариант проще понять пользователю;

2️⃣ его смогут озвучить скринридеры и другие вспомогательные технологии;

3️⃣ в браузерах без поддержки нового <select> список останется полностью рабочим.

Иконки и другие визуальные элементы должны дополнять текст, а не заменять его.

🔗 Источник

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

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

#readme #html #css #accessibility
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍21🥰1
🤔 Вопрос с собеседования

Попадёт ли ответ 404 в catch при использовании fetch()?

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

Нет.

fetch() не считает HTTP-статусы 404, 500 и другие ошибками. Promise успешно выполнится, а в ответе придёт объект Response.

fetch("/api/users")
.then(response => {
console.log(response.status); // 404
console.log(response.ok); // false
})
.catch(() => {
console.log("Ошибка сети");
});

Чтобы обработать такие ответы как ошибки, нужно проверить response.ok:

const response = await fetch("/api/users");

if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}

🔜 Идеальный короткий ответ:

fetch() попадает в catch только при сетевых ошибках или если запрос не удалось выполнить. Ответы 404 и 500 нужно обрабатывать через response.ok или response.status.


👍 — знал/а
🔥 — стало понятнее

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

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

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

#career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍10🥰2
Как вы чаще всего открываете DevTools?

👍 — F12
❤️ — Горячими клавишами (Ctrl+Shift+I / ⌘⌥I)
🔥 — ПКМ → Inspect

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

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

#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍3419🥰1
🔗 5 значений cursor, которые реально используются

cursor: grab;
cursor: grabbing;
cursor: zoom-in;
cursor: not-allowed;
cursor: progress;


Эти значения помогают сделать интерфейс понятнее без дополнительного текста.

⚠️ Если используете url(), всегда указывайте запасной вариант:


cursor: url(cursor.png), pointer;


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

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

#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
🖥️ Как превратить портфолио в демо современных веб-технологий

Этот сайт полностью стилизован под старый CRT-монитор. Автор использовал Three.js, чтобы воспроизвести мерцание, геометрические искажения, цветовые аберрации и другие эффекты ЭЛТ-дисплея.

🔵 Внутри — полноценный интерфейс в стиле Windows 95 с браузером, резюме и мини-играми.


Хороший пример того, как WebGL может использоваться не только для 3D-сцен, но и для создания необычного пользовательского опыта.

🔗 Ссылка на сайт

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

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

#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2😁2
🧮 CSS-свойство, которое делает отображение чисел заметно лучше

Если в интерфейсе есть часы, таймер, счётчик или финансовые данные, числа могут «прыгать» при изменении. Причина — большинство шрифтов используют пропорциональную ширину символов.

Исправить это можно одной строкой:


font-variant-numeric: tabular-nums;


После этого все цифры занимают одинаковую ширину, поэтому значения перестают смещаться при обновлении.

Полезно для:

⏱️ часов и таймеров;
📈 дашбордов и аналитики;
💰 финансовых таблиц;
🏆 счётчиков и табло.

Свойство поддерживается всеми современными браузерами и не требует подключения дополнительных библиотек 💡

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

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

#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123🔥2
Правильный ответ: fill() использует одну и ту же ссылку на объект

Array.fill() не создаёт новые массивы. Если передать в него объект или массив, все элементы будут ссылаться на один и тот же экземпляр.

🟢 Поэтому после:

arr[0].push(1);

🟢 результат будет:

[[1], [1], [1]]


👍 — ответил(а) правильно
🔥 — узнал(а) что-то новое

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

#code_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍11🥰1🤔1
Как настроить Lazy Loading для изображений и компонентов

Lazy Loading — отложенная загрузка ресурсов, которая ускоряет стартовую загрузку страницы и экономит трафик, особенно на медленных сетях.

Почему важно:

— Быстрая загрузка видимого контента
— Меньшая нагрузка на сеть и сервер
— Плавная подгрузка контента при прокрутке

➡️ Как внедрить:

1. Используем атрибут loading="lazy" для изображений:


<img src="image.jpg" loading="lazy" alt="Описание" />


2. Применяем Intersection Observer для кастомных элементов:


const observer = new IntersectionObserver((entries, obs) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const el = entry.target;
el.src = el.dataset.src;
obs.unobserve(el);
}
});
});

document.querySelectorAll('img[data-src]').forEach(img => observer.observe(img));


3. Используем динамический импорт компонентов:

🈂️ React:


const LazyComp = React.lazy(() => import('./Component'));
<Suspense fallback="Загрузка..."><LazyComp /></Suspense>


🈂️ Vue:


const LazyComp = defineAsyncComponent(() => import('./Component.vue’));


4. Предварительная загружаем критичные изображения:

Используйте <link rel="preload"> для важных ресурсов.

5. Тестируем производительность:

Chrome DevTools и Lighthouse помогут оценить эффект.

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

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

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

Что такое Event Loop простыми словами?

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

Event Loop — это механизм, который позволяет JavaScript выполнять асинхронные операции, несмотря на то что сам язык однопоточный.

Пока выполняется текущий код, асинхронные задачи (например, setTimeout, fetch или обработчики событий) ожидают своей очереди.

Когда стек вызовов становится пустым, Event Loop берёт следующую задачу из очереди и передаёт её на выполнение.

🔜 Идеальный короткий ответ:

Event Loop следит за стеком вызовов и очередями задач, чтобы запускать асинхронный код только тогда, когда основной поток свободен.


👍 — знал/а
🔥 — стало понятнее

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

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

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

#career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥7🥰1🤔1
🚀 Не уверены, стоит ли переходить на зрелую ИИ-инженерию? Начните с демо-урока!

Вот-вот стартует наш курс AgentOps. Если вы сомневаетесь в формате, просто оставьте заявку и получите бесплатный демо-урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».

Для тех, кто готов мощно прокачать портфолио, прямо сейчас действует предложение «3 любых курса по цене 1»:
— При покупке VIP-тарифа (осталось 4 места) нового потока «ИИ-агенты» вы получаете в подарок доступ к курсу «AgentOps» + ещё один любой курс Академии на выбор

— В деньгах это два топовых курса по автоматизации и контролю ИИ всего за 134.000 ₽ вместо 263.000 ₽ 🔥 А за счет третьего курса (например, можно выбрать «Математику») вы соберете мощный стек и освоите целое востребованное направление.

— Платеж можно разбить на несколько частей с помощью беспроцентной рассрочки.


👉 Получить демо-урок и зафиксировать спецпредложение 3 в 1
🥰21
💡 CSS Grid Lanes решает одну проблему, но может создать другую

Красивая раскладка карточек — это здорово. Но если внутри есть ссылки или кнопки, порядок перехода по Tab может оказаться совершенно неожиданным.

Разбираемся, в чём причина

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

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

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

#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3👏2🥰1🤔1