This media is not supported in your browser
VIEW IN TELEGRAM
Сайт, который должен быть в закладках у каждого фронтендера.
— Иллюстрации для каждого свойства
— Удобные коллекции: Flexbox, Grid, Animations, Typography
— Быстрый поиск по свойствам
— Идеально для освежить память перед собесом
Особенно полезно для объяснения CSS джунам — показали картинку, и не нужно рисовать на доске
#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2🥰2
Большинство «странных» багов в JS начинаются не с фреймворков, а с типов данных. Непонимание разницы между примитивами и объектами приводит к ошибкам в сравнениях, мутации данных и поведении функций.
#career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🥰2
3 элемента
flex: 1 0 100px
Контейнер 500px
Какой будет offsetWidth одного блока?
❤️ — 100px
😁 — 166.66px (или ~167px)
👾 — 500px
🌚 — 0px
#code_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16❤4🥰1🌚1👾1
frontend-fundamentals cheatsheet.pdf
58.6 MB
Сжатый конспект ключевых тем и механизмов современной фронтенд-разработки.
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🥰3❤2🌚1
⚛️ React: правильный useEffect с setInterval
Типичная ошибка — класть состояние в зависимости эффекта, который сам его обновляет.
❌ Плохо
count в зависимостях → useEffect пересоздаёт setInterval каждую секунду.
✅ Правильно
Функциональное обновление → интервал создаётся один раз, состояние всегда актуально.
Правило из документации:
📍 Навигация: [Вакансии]
🎁 Новогодняя акция: 3 курса по цене 1
🤝 Помощь с выбором курса
🐸 Библиотека фронтендера
#hotfix #react
Типичная ошибка — класть состояние в зависимости эффекта, который сам его обновляет.
count в зависимостях → useEffect пересоздаёт setInterval каждую секунду.
Функциональное обновление → интервал создаётся один раз, состояние всегда актуально.
Правило из документации:
Если новое состояние зависит от предыдущего — используйте функциональное обновление.
useEffect не должен перезапускаться из-за собственного setState.
#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🥰3
Недавно наткнулись на то, что Safari в марте этого года добавил поддержку Iterator helpers. А ведь это реально полезная штука — позволяет делать цепочки трансформаций массивов без создания промежуточных копий.
array.at(-1) вместо array[array.length - 1]
structuredClone() вместо танцев с JSON.stringify/parse
У Set появились нормальные операции типа union() и intersection()
replaceAll() или про то, что Promise.withResolvers() избавляет от странного паттерна с промисами.#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Фронтенд-разработчик, пора выходить за рамки обычного чат-бота 🧠
Пользователи ждут от интерфейсов автономности. Мы научим вас строить AI-агентов, которые умеют принимать решения, сохранять контекст и надёжно интегрироваться в ваш продукт.
Чему вы научитесь:
— интеграции через n8n для связи фронтенда с мощными AI-сценариями через визуальные воркфлоу;
— основам RAG для того, чтобы ваш агент давал точные ответы на базе внешних данных;
— контролю стейта в
— обсервабилити в LangSmith для отладки поведения нейросети в режиме реального времени.
Сделайте свой проект по-настоящему умным.
Записаться на курс
Пользователи ждут от интерфейсов автономности. Мы научим вас строить AI-агентов, которые умеют принимать решения, сохранять контекст и надёжно интегрироваться в ваш продукт.
Чему вы научитесь:
— интеграции через n8n для связи фронтенда с мощными AI-сценариями через визуальные воркфлоу;
— основам RAG для того, чтобы ваш агент давал точные ответы на базе внешних данных;
— контролю стейта в
LangGraph для создания надёжных диалоговых систем, которые не «тупят»;— обсервабилити в LangSmith для отладки поведения нейросети в режиме реального времени.
Сделайте свой проект по-настоящему умным.
Записаться на курс
❤4😁2
Правильный ответ:
flex: 1 0 100px = flex-grow: 1, flex-shrink: 0, flex-basis: 100px
flex-grow: 1 — элемент может расти
flex-shrink: 0 — элемент НЕ может сжиматься
flex-basis: 100px — базовый размер 100px
Ширина контейнера: 500px
Базовый размер всех элементов: 3 × 100px = 300px
Свободное пространство: 500px - 300px = 200px
Распределение на 3 элемента: 200px ÷ 3 ≈ 66.66px каждому
Финальный размер каждого элемента: 100px + 66.66px ≈ 166.66px
#code_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥰2❤1