Frontend | Вопросы собесов
前往频道在 Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
显示更多📈 Telegram 频道 Frontend | Вопросы собесов 的分析概览
频道 Frontend | Вопросы собесов (@easy_javascript_ru) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 17 453 名订阅者,在 技术与应用 类别中位列第 7 464,并在 俄罗斯 地区排名第 37 711 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 17 453 名订阅者。
根据 27 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -217,过去 24 小时变化为 -18,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 6.71%。内容发布后 24 小时内通常能获得 4.29% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 171 次浏览,首日通常累积 748 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 4。
- 主题关注点: 内容集中在 ставь, браузер, html, border, flex 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
凭借高频更新(最新数据采集于 28 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
17 453
订阅者
-1824 小时
-707 天
-21730 天
帖子存档
\n\n🟠`requestAnimationFrame()` — лучший способ в чистом JS \nЕсли нужно более гибкое управление анимацией, используем requestAnimationFrame(). \n\n\n\n\n\n\n\n🟠Библиотеки (GSAP, Anime.js, Velocity.js)\nЕсли нужно делать мощные анимации с минимальным кодом, лучше использовать библиотеку. \n\n\n\n\n\n\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-08-30T09:05:46Z","dateModified":"2026-08-30T09:05:46Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1170},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":9}]}},{"@type":"ListItem","position":16,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2895","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2895","mainEntityOfPage":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2895","headline":"Регистрируйтесь на Yandex Scale 2026 Главная конференция Yandex Cloud. Узнайте о сервисах, которые меняют ваш…","articleBody":"Регистрируйтесь на Yandex Scale 2026\n\nГлавная конференция Yandex Cloud.\n\nУзнайте о сервисах, которые меняют ваш бизнес.\n\n4 офлайн-трека (AI, Infra + DevTools, Data, Security), онлайн-трек Deep Tech, воркшопы по ИИ и интерактивы. Подробнее о программе читайте в карточках🗒\n\n📅24 сентября\n🚗Москва + 💻онлайн\n\nУчастие бесплатное! \n\nЗарегистрироваться\n\n#реклама 16+\nscale.yandex.cloud\nО рекламодателе","datePublished":"2026-08-29T19:19:13Z","dateModified":"2026-08-31T17:45:19Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"image":["https://n3.tlmtr.cc/p/_qh7a8NelTAmk4CLLBbe939HEk0CHK42p4Ra2L3hWupc?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":844},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2894","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2894","mainEntityOfPage":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2894","headline":"🤔 Что такое нечистая функция? Нечистая функция — функция, которая: - Имеет побочные эффекты (запросы, изменен…","articleBody":"🤔 Что такое нечистая функция?\n\nНечистая функция — функция, которая:\n- Имеет побочные эффекты (запросы, изменения внешнего состояния).\n- Может возвращать разные результаты при одних и тех же входных данных.\n\nСтавь 👍 если знал ответ, 🔥 если нет\nЗабирай 📚 Базу знаний","datePublished":"2026-08-29T16:10:36Z","dateModified":"2026-08-29T16:10:36Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1296},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2893","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2893","mainEntityOfPage":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2893","headline":"Нужны 7 желающих для работы с искусственным интеллектом. Требования: 20-55 лет Работа из дома. График свободн…","articleBody":"Нужны 7 желающих для работы с искусственным интеллектом.\n\nТребования: 20-55 лет\n\nРабота из дома. График свободный. \n\nПришло задание — изучили — выполнили — получили свои деньги.\n\nДеньги вы получаете в зависимости от сложности задания. Например:\n\nЗа задание могут платить 500-10.000 рублей. \n500 рублей — это около 5-30 минут. \n10 000 руб. это 5-6 часов.\n\nРабота может быть разной: Оживить фото, создать видео, реставрировать старое фото и т.д.\n\n💰 В среднем новичок получает до 150.000 руб в месяц. А опытный может и 300-500т.\n\nМы обучим вас сами:\n\n— 3 дня уроков по 30 минут\n— Домашки с проверкой и оплатой бонусами\n— Платим 10 тыс за каждую выполненную домашку\n\n⚡ Набор заканчивается завтра.\n\nДля регистрации жмите кнопку \"Зарегистрироваться\": \n\nЗарегистрироваться\n\n#реклама 16+\ncourse.neurogansta.ru\nО рекламодателе","datePublished":"2026-08-29T10:35:42Z","dateModified":"2026-08-31T09:01:15Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"image":["https://n1.tlmtr.cc/p/__UL4JgJc2fyz_bAC_nqFlToFxIpPq9y2Anv398xMo2Q?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":855},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2892","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2892","mainEntityOfPage":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2892","headline":"🤔 Что можешь рассказать об version? version (версия) – это числовой или текстовый идентификатор, который испо…","articleBody":"🤔 Что можешь рассказать об version?\n\nversion (версия) – это числовой или текстовый идентификатор, который используется для обозначения определённого состояния кода, программы, библиотеки или API. \nВерсия помогает понимать, какие изменения были внесены, и совместима ли текущая версия с предыдущими. \n\n🟠Семантическое версионирование (SemVer)\nНаиболее распространённый стандарт версионирования – SemVer (Semantic Versioning). Он использует формат \nMAJOR.MINOR.PATCH\n\nПример в package.json (Node.js-проекты): \n{\n \"name\": \"my-app\",\n \"version\": \"1.2.3\"\n}\n\nКоманда для обновления версии в package.json \nnpm version major # 2.0.0\nnpm version minor # 1.3.0\nnpm version patch # 1.2.4\n\n🟠Версионирование API\nПри работе с REST API или GraphQL API тоже используют версии, чтобы не ломать старые клиенты.\nhttps://api.example.com/v1/users\nhttps://api.example.com/v2/users\n\n🟠Версионирование в Git\nВ Git версиями называют теги (tags), привязанные к коммитам.\ngit tag v1.0.0\ngit push origin v1.0.0\n\nЧтобы посмотреть все версии \ngit tag\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-08-29T09:05:47Z","dateModified":"2026-08-29T09:05:47Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":1419},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2891","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2891","mainEntityOfPage":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru/posts/2891","headline":"Тимлид, перестаньте быть единственным взрослым в команде Чувствуете, что вся команда бежит к вам с любым вопр…","articleBody":"Тимлид, перестаньте быть единственным взрослым в команде\n\nЧувствуете, что вся команда бежит к вам с любым вопросом? А вечером вы всё ещё решаете задачи, которые могли сделать другие? \n\n📅 9 сентября в 20:00 Алексей Куксенок расскажет, как перестать быть \"единственным взрослым\" и распределить ответственность. Узнаете, как строить команду, которая работает без вас. Для тимлидов, руководителей и всех, кто хочет управлять, а не тащить. \n\nУзнать больше\n\n#реклама 16+\notus.ru\nО рекламодателе","datePublished":"2026-08-28T23:49:46Z","dateModified":"2026-08-30T21:49:51Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ch/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"image":["https://n1.tlmtr.cc/p/_Aa8UC72rMNvMvvHi-UX-TvFoM-6LezObDkzo2VBfmHI?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":879}]}}]}



+5

🤔 Какие методы будут у API?
Методы API чаще всего соответствуют CRUD-операциям:
- GET — получение данных.
- POST — создание ресурса.
- PUT/PATCH — обновление.
- DELETE — удаление.
Если REST не используется, методы могут быть обёрнуты в RPC-стиль или GraphQL-запросы: getUser, updatePrice, subscribeToPrice, logUserActivity.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что выбираешь ооп или функции?
Выбор между объектно-ориентированным программированием (ООП) и функциональным программированием (ФП) зависит от задачи, которую нужно решить. Оба подхода имеют свои плюсы и минусы.
🚩Когда использовать ООП?
Объектно-ориентированное программирование подходит, когда:
Нужно моделировать реальные объекты и их поведение
Приложение состоит из множества взаимодействующих сущностей
Важно инкапсулировать данные и защитить их от прямого изменения
Требуется повторное использование кода через наследование и полиморфизм
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} издает звук`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} лает`);
}
}
const dog = new Dog("Бобик");
dog.speak(); // "Бобик лает"
🚩Когда использовать функциональное программирование?
Функциональный подход хорош, если
Код должен быть чистым и предсказуемым
Нужно избегать изменений состояния (иммутабельность)
Требуется много работы с массивами, коллекциями данных
Нужно легко писать асинхронный код
const double = num => num * 2;
const numbers = [1, 2, 3, 4];
const doubledNumbers = numbers.map(double);
console.log(doubledNumbers); // [2, 4, 6, 8]
Ставь 👍 и забирай 📚 Базу знаний⏳ Ребята, сегодня заканчивается акция, о которой стоит знать, если вы в поиске работы или планируете сменить её в ближайший год.
easyoffer — это платформа для подготовки к IT-собесам и поиска оффера. Внутри:
– база реальных вопросов и live-coding задач с собесов (с частотой их встречаемости)
– эталонные ответы от Senior-разработчиков
– 1100+ записей настоящих интервью (Сбер, Яндекс, Авито, WB, OZON, МТС)
– автоотклики на hh, генератор резюме под вакансию, тренажёры собеседований
Сегодня пожизненный PRO-доступ продаётся по цене одного года — платишь один раз и пользуешься всем этим всю жизнь, включая будущие фичи. С завтрашнего дня — только обычная годовая подписка.
👉 https://easyoffer.ru/pro
Как Фронтенд-разработчику получить оффер в бигтех в 2026
Узнаешь, какие вопросы задают на собеседованиях
Поймёшь, какие темы по JavaScript и React нужно знать особенно хорошо
Увидишь, как рассуждают сильные кандидаты при решении задач
Получишь понимание того, чего ожидают интервьюеры от Middle и Senior специалистов
Участие — бесплатно.
Зарегистрироваться
#реклама 16+
web.shortcut.education
О рекламодателе
🤔 Что такое Web Workers и зачем они нужны?
Web Workers позволяют запускать JavaScript-код в отдельном потоке, не блокируя основной поток интерфейса. Они полезны для тяжёлых вычислений, чтобы не замораживать UI.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Для чего в js нужна асинхронность?
JavaScript – однопоточный язык, где код выполняется **последовательно, но иногда мы ждём ответа (запрос в интернет, чтение файла, таймер). Если всё делать синхронно, программа зависнет.
🟠Проблема синхронного кода
Представьте, что мы загружаем данные из API синхронно:
const data = fetch("https://api.example.com/users"); // ❌ Ожидание ответа
console.log("Данные загружены:", data);
🟠Асинхронность решает эту проблему
Асинхронный код не блокирует выполнение программы
fetch("https://api.example.com/users")
.then(response => response.json())
.then(data => console.log("Данные загружены:", data));
console.log("Этот код выполнится сразу! 🚀");
🚩Как работает асинхронность в JS?
Callbacks (обратные вызовы) – старый способ.
Promises (fetch(), then/catch) – современный вариант.
async/await – удобный синтаксис для асинхронного кода.
async/await – лучший способ писать асинхронный код
async function getData() {
try {
let response = await fetch("https://api.example.com/users");
let data = await response.json();
console.log("Данные:", data);
} catch (error) {
console.error("Ошибка загрузки:", error);
}
}
getData();
console.log("Этот код выполняется, пока ждём данные!");
🚩Где нужна асинхронность?
Запросы к серверу
Чтение файлов
Таймеры
Работа с базами данных
Взаимодействие с пользователем (ожидание ввода)
Ставь 👍 и забирай 📚 Базу знанийПожизненный PRO — по цене одного года.
Покупаешь один раз — пользуешься всю жизнь:
👉 https://easyoffer.ru/pro
🚀 PRO-доступ закроет 99% проблем на пути к офферу:
1. 1100+ записей реальных собеседований (включая топы: Сбер, Авито, Яндекс, WB, OZON, МТС). Видите всё изнутри: как спрашивают, как отвечают сильные кандидаты и на каких ошибках проваливаются 80%.
2. База live-coding задач и вопросов с реальных собесов — с уникальной системой вероятности их встречи. Готовитесь не вслепую, а точечно по темам, которые спрашивают чаще всего.
3. Эталонные ответы от Senior-разработчиков. Никакой воды и догадок — только чёткие структурированные решения, за которые дают «зелёный свет» к офферу.
4. Полный доступ ко всем грейдам и профессиям. Junior вы или Senior, тестировщик, разработчик или проджект — вы получаете ВСЕ материалы easyoffer без ограничений. Безлимитно, Все, Навсегда.
5. База 400+ тестовых заданий. Прокачивайте навыки на реальных задачах — тех самых, что дают перед собесом.
6. Автоотклики на hh.ru — пока вы спите, резюме уходит рекрутерам автоматически. Экономия сотен часов ручного кликанья.
7. Аналитика ТОП-требований из вакансий. Парсим рынок и показываем, какие скиллы сейчас в цене. Апгрейдите резюме точечно и проходите ATS-фильтры (они отсеивают до 75% резюме ещё до рекрутера).
8. Генератор резюме и CV под каждую вакансию. Забудьте про «универсальное» резюме — нейросеть адаптирует ваш опыт под конкретную позицию за минуту и повышает шансы на приглашение в разы.
9. Тренажёры подготовки к собеседованию:
«Реальное собеседование» — сценарий вопросов из настоящих интервью. «Проработка вопросов» — флеш-карточки по методике интервальных повторений (как Anki)
10. 🔥 Самое важное: все будущие фичи
Вы платите один раз, а продукт растёт всю жизнь. Каждое обновление, каждый новый инструмент, каждая фича, которая появится за все годы проекта, автоматически падает вам в подписку без доплат. Вы фиксируете цену года, а получаете продукт, который через пару лет будет стоить в разы дороже
⭐️ Это уникальная акция пока сайт в режиме Beta.
Успей ей воспользоваться⏳ Завтра последний день.
👉 https://easyoffer.ru/pro
Аренда VPS/VDS-сервера.
Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Преимущества аренды:
- Выделенные ресурсы без переплаты;
- KVM-виртуализация;
- Быстрые NVMe SSD;
- Бесплатная защита от DDoS;
- Управление через панель, API и Terraform;
- Техподдержка 24/7.
Запустите сервер за несколько минут!
Попробовать
#реклама 16+
selectel.ru
О рекламодателе
🤔 Что такое useContext?
Это хук для доступа к данным из контекста. Он позволяет передавать данные между компонентами без необходимости проброса через пропсы. Это упрощает управление глобальным состоянием.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥 Осталось 3 дня!
Пожизненный easyoffer PRO по цене одного года. Покупаешь один раз – пользуешься всю жизнь.
Что входит в PRO:
– Вопросы и задачи с реальных собеседований в конкретных компаниях
– Лучшие ответы и видео-примеры от middle/senior специалистов
– Записи реальных собеседований
– Обход фильтров ATS с топ-30 ключевых слов в резюме
– Автоотклики на hh
– Тренажёры и симуляторы для идеальной подготовки к интервью
⏳ Акция действует только до 2 сентября 23:59 по МСК
👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/pro
🤔 Какие используешь подходы для написания приложения которую проще поддерживать, чем делать первоначальную разработку?
При разработке frontend-приложений, которые в будущем будет проще поддерживать и масштабировать, я придерживаюсь ряда ключевых подходов.
🟠Разделение ответственности (Separation of Concerns)
Это значит, что код должен быть разделен по зонам ответственности. В frontend-разработке это проявляется в:
Чистом разделении логики, представления и данных (например, с помощью архитектуры MVC, MVVM или FLUX).
Использовании компонентов в React/Vue или шаблонов в Angular.
Разделении CSS, JS и HTML, либо использовании методологий, где стили хранятся рядом с компонентом (CSS Modules, Styled Components).
Вместо того, чтобы писать всю логику и разметку в одном файле:
function App() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>Count: {count}</button>;
}
Я разделяю бизнес-логику и представление
// CounterLogic.js
export function useCounter() {
const [count, setCount] = useState(0);
const increment = () => setCount(count + 1);
return { count, increment };
}
// Counter.js
import { useCounter } from "./CounterLogic";
function Counter() {
const { count, increment } = useCounter();
return <button onClick={increment}>Count: {count}</button>;
}
🟠Компонентный подход и повторное использование кода
Frontend-приложения должны строиться из переиспользуемых и изолированных компонентов. Это уменьшает дублирование кода и делает его понятным.
// Button.js (переиспользуемый компонент)
function Button({ onClick, children }) {
return <button onClick={onClick}>{children}</button>;
}
// Counter.js (использует Button)
function Counter() {
const [count, setCount] = useState(0);
return <Button onClick={() => setCount(count + 1)}>Count: {count}</Button>;
}
🟠Чистый код и читаемость
Код должен быть понятным не только мне, но и другим разработчикам.
Понятные имена переменных и функций. Вместо x → userAge, вместо doSmth() → calculateTotalPrice().
Меньше вложенности. Вместо кучи if и else, лучше использовать early return.
Разбиение кода на модули. Один файл = одна зона ответственности.
function getDiscountedPrice(price, discount) {
if (discount <= 0) return price;
return price - price * (discount / 100);
}
🟠Состояние приложения: локальное vs глобальное
В зависимости от сложности приложения нужно правильно управлять состоянием:
Локальное состояние – useState (React), ref (Vue) для простых данных внутри компонента.
Глобальное состояние – Redux, MobX, Zustand, Pinia, Context API – когда данные нужны многим компонентам.
Серверное состояние – React Query, SWR – когда данные приходят с API и их нужно кешировать.
🟠Следование принципам SOLID и DRY
DRY (Don't Repeat Yourself) – не повторяем код, используем функции, хуки, компоненты.
SOLID – например, принцип единственной ответственности (Single Responsibility Principle) гласит, что каждый компонент или функция должны решать только одну задачу.
function sendEmailAndSaveToDB(user) {
sendEmail(user.email);
saveUserToDatabase(user);
}
Лучше разделить логику
function sendEmail(email) { /* отправка письма */ }
function saveUserToDatabase(user) { /* сохранение в БД */ }
function registerUser(user) {
sendEmail(user.email);
saveUserToDatabase(user);
}
🟠Использование TypeScript
TypeScript помогает избежать ошибок и делать код предсказуемым.
type User = {
id: number;
name: string;
};
function getUserName(user: User): string {
return user.name;
}
🟠Документация и кодстайл
ESLint + Prettier → автоформатирование и проверка стиля.
JSDoc/TypeScript → документация функций и типов данных.
Storybook → для документирования UI-компонентов.
Ставь 👍 и забирай 📚 Базу знанийЯндекс Музыка до 360 дней бесплатно
Яндекс Музыка для вас и 3-х ваших близких.
Кинопоиск и Яндекс Книги тоже в мультиподписке Плюс.
Попробуйте бесплатно❤️
Слушать
#реклама 18+
music.yandex.ru
О рекламодателе
🤔 Какие достоинства у инкрементального DOM против виртуального?
Инкрементальный DOM (например, в Svelte):
- Менее абстрактен — ближе к реальному DOM.
- Быстрее монтируется — нет необходимости в полной виртуальной копии.
- Меньше памяти и меньше промежуточных структур.
В отличие от виртуального DOM:
- он не сравнивает деревья, а прямо вставляет нужные изменения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Услуги дата-центра в Москве
Размещение и аренда серверного оборудования в дата-центре.
👍 4 современных дата-центра в Москве.
👍 Лицензированный оператор связи.
👍 Индивидуальные конфигурации выделенных серверов под задачи клиента.
👍 Круглосуточная техническая поддержка в Телеграм, без ботов.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе
🤔 Как мы будем через js анимировать что либо?
В JavaScript есть три основных способа создания анимаций:
CSS-анимации (
transition, @keyframes) + изменение классов через JS
Метод requestAnimationFrame()
Использование библиотек (GSAP, Anime.js, Velocity.js)
🟠CSS-анимации + управление через JS
Самый простой способ — использовать CSS-анимации, а в JS только добавлять или убирать классы.
<button onclick="toggleBox()">Анимировать</button>
<div id="box"></div>
<style>
#box {
width: 100px;
height: 100px;
background: red;
transition: transform 0.5s ease-in-out;
}
.move {
transform: translateX(200px);
}
</style>
<script>
function toggleBox() {
document.getElementById("box").classList.toggle("move");
}
</script>
🟠`requestAnimationFrame()` — лучший способ в чистом JS
Если нужно более гибкое управление анимацией, используем requestAnimationFrame().
<button onclick="startAnimation()">Старт</button>
<div id="box"></div>
<style>
#box {
width: 50px;
height: 50px;
background: blue;
position: absolute;
}
</style>
<script>
let position = 0;
let animationId;
function animate() {
position += 5; // Двигаем на 5px за кадр
document.getElementById("box").style.transform = `translateX(${position}px)`;
if (position < 300) { // Останавливаем, когда достигнет 300px
animationId = requestAnimationFrame(animate);
}
}
function startAnimation() {
cancelAnimationFrame(animationId); // Останавливаем предыдущую анимацию
position = 0;
animate();
}
</script>
🟠Библиотеки (GSAP, Anime.js, Velocity.js)
Если нужно делать мощные анимации с минимальным кодом, лучше использовать библиотеку.
<button onclick="animateBox()">Анимировать</button>
<div id="box"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script>
function animateBox() {
gsap.to("#box", { x: 300, rotation: 360, duration: 2, ease: "elastic.out(1,0.3)" });
}
</script>
Ставь 👍 и забирай 📚 Базу знанийРегистрируйтесь на Yandex Scale 2026
Главная конференция Yandex Cloud.
Узнайте о сервисах, которые меняют ваш бизнес.
4 офлайн-трека (AI, Infra + DevTools, Data, Security), онлайн-трек Deep Tech, воркшопы по ИИ и интерактивы. Подробнее о программе читайте в карточках🗒
📅24 сентября
🚗Москва + 💻онлайн
Участие бесплатное!
Зарегистрироваться
#реклама 16+
scale.yandex.cloud
О рекламодателе
🤔 Что такое нечистая функция?
Нечистая функция — функция, которая:
- Имеет побочные эффекты (запросы, изменения внешнего состояния).
- Может возвращать разные результаты при одних и тех же входных данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Нужны 7 желающих для работы с искусственным интеллектом.
Требования: 20-55 лет
Работа из дома. График свободный.
Пришло задание — изучили — выполнили — получили свои деньги.
Деньги вы получаете в зависимости от сложности задания. Например:
За задание могут платить 500-10.000 рублей.
500 рублей — это около 5-30 минут.
10 000 руб. это 5-6 часов.
Работа может быть разной: Оживить фото, создать видео, реставрировать старое фото и т.д.
💰 В среднем новичок получает до 150.000 руб в месяц. А опытный может и 300-500т.
Мы обучим вас сами:
— 3 дня уроков по 30 минут
— Домашки с проверкой и оплатой бонусами
— Платим 10 тыс за каждую выполненную домашку
⚡ Набор заканчивается завтра.
Для регистрации жмите кнопку "Зарегистрироваться":
Зарегистрироваться
#реклама 16+
course.neurogansta.ru
О рекламодателе
🤔 Что можешь рассказать об version?
version (версия) – это числовой или текстовый идентификатор, который используется для обозначения определённого состояния кода, программы, библиотеки или API.
Версия помогает понимать, какие изменения были внесены, и совместима ли текущая версия с предыдущими.
🟠Семантическое версионирование (SemVer)
Наиболее распространённый стандарт версионирования – SemVer (Semantic Versioning). Он использует формат
MAJOR.MINOR.PATCHПример в
package.json (Node.js-проекты):
{
"name": "my-app",
"version": "1.2.3"
}
Команда для обновления версии в package.json
npm version major # 2.0.0
npm version minor # 1.3.0
npm version patch # 1.2.4
🟠Версионирование API
При работе с REST API или GraphQL API тоже используют версии, чтобы не ломать старые клиенты.
https://api.example.com/v1/users https://api.example.com/v2/users🟠Версионирование в Git В Git версиями называют теги (
tags), привязанные к коммитам.
git tag v1.0.0
git push origin v1.0.0
Чтобы посмотреть все версии
git tag
Ставь 👍 и забирай 📚 Базу знанийТимлид, перестаньте быть единственным взрослым в команде
Чувствуете, что вся команда бежит к вам с любым вопросом? А вечером вы всё ещё решаете задачи, которые могли сделать другие?
📅 9 сентября в 20:00 Алексей Куксенок расскажет, как перестать быть "единственным взрослым" и распределить ответственность. Узнаете, как строить команду, которая работает без вас. Для тимлидов, руководителей и всех, кто хочет управлять, а не тащить.
Узнать больше
#реклама 16+
otus.ru
О рекламодателе
