Фронтендер от бога
رفتن به کانال در Telegram
Божественные дайджесты по фронтенду и немного юмора. По всем вопросам: @godinmedia
نمایش بیشتر3 480
مشترکین
-124 ساعت
-107 روز
-3630 روز
آرشیو پست ها
3 479
Cryanide как альтернативная ветвь развития web-технологий
#почитать
Кратко о том, почему я не использую фреймворки, зачем пишу всё с нуля и к чему это привело.
Я написал полноценный SDK для web-приложений как концепт альтернативной ветви развития, если бы web-индустрия пошла по пути игровых движков.
⏱Читать статью
3 479
Хватит использовать JavaScript для решения задач CSS
#почитать
Недостаток знаний часто подталкивает людей к чрезмерно сложным решениям, и рано или поздно это отражается на производительности.
Возьмем content-visibility: auto. Он дает тот же эффект, что и React-Window, но без единой строчки JS и без увеличения размера сборки. Аналогичная ситуация с современными единицами высоты окна (dvh, svh, lvh): наконец-то приведена в порядок "мобильная" высота, которую годами пытались компенсировать через window.innerHeight.
Обе технологии в 2024 году получили более 90% поддержки современных браузеров и полностью готовы для продакшна. Однако мы по привычке продолжаем решать такие задачи с помощью JS, просто потому, что CSS незаметно ушел вперед, пока мы спорили о React Server Components.
⏱Читать статью
3 479
Всплытие переменных и функций в JavaScript
#почитать
В JavaScript есть уникальная особенность, переменную или функцию можно использовать по коду выше...
⏱Читать статью
3 479
Запилил кросс-фреймворк Markdown/MDX парсер, чтобы не мучаться с контентом
#почитать
Долго я возился с маркдауном в своих проектах и, честно говоря, знатно подгорел. Первая проблема — это вечный выбор библиотеки.
С одной стороны, есть «конструкторы» типа unified, remark и rehype. Штуки мощные, но настраивать весь этот AST-конвейер и систему плагинов — это какой-то оверхед и лишняя сложность, имхо.
С другой стороны, есть @next/mdx, который вроде и ок, но слишком завязан на страницах и вообще не умеет работать на клиенте.
Раньше я обычно выбирал что-то вроде markdown-to-jsx или react-markdown.
DX у них приятнее, работают и на клиенте, и на сервере, весят мало.
Но вот беда: они «из коробки» не переваривают HTML или MDX, и ты снова вязнешь в настройке плагинов. А если добавить туда i18n (типа i18next или next-intl), начинается настоящий ад. Куча if/else в коде, чтобы отрендерить нужный язык, и бандл раздувается до небес. Плюс вечные косяки с front-matter. Ну и до недавнего времени всё это было только для React.
⏱Читать статью
3 479
DOM-дерево — как не запутаться в ветвях объектной модели документа
#почитать
Бывало такое: смотрите вы на красивую страницу интернет-магазина, открываете консоль разработчика (ту самую, по F12 или через правый клик), а там — лес из тегов, который вообще не похож на то, что вы видите глазами?
⏱Читать статью
3 479
Интерактивный HTML с Alpine.js на простых примерах
#почитать
Большие фронтенд-фреймворки часто требуют сложной настройки: сборщики, роутинг, состояния, хуки, конфигурации. Но для небольших задач вроде выпадающих меню, модалок или табов этого слишком много — иногда хочется просто взять HTML и быстро добавить в него немного интерактивности.
⏱Читать статью
3 479
Замыкание в JavaScript — зачем функциям личное пространство
#почитать
В разработке нам постоянно нужны «умные», самостоятельные функции: счетчики, которые знают свое предыдущее значение, обработчики событий с индивидуальными настройками, механизмы для защиты данных.
Чтобы не городить глобальные переменные и не писать громоздкие конструкции (что почти всегда ведет к багам), мы посмотрим на еще одну фишку JS.
В предыдущих статьях мы разобрали: функции, их стрелочные записи, методы объектов и даже покорили this. Теперь пора переходить к теме, которая часто пугает на собеседованиях, но на деле оказывается невероятно элегантной — замыканиям.
⏱Читать статью
3 479
Форматирование относительного времени в JavaScript
#почитать
API Intl.RelativeTimeFormat доступно в Baseline в статусе «Widely Available» с 16 марта 2023 года. Это мощный инструмент для отображения относительного времени в локализованном виде, например, «через минуту», «вчера» или «2 недели назад». Он автоматически адаптируется к языку и культурным особенностям региона, делая интерфейс более понятным и дружелюбным для пользователей.
В этой статье мы разберём, как работает Intl.RelativeTimeFormat, и приведём несколько примеров его использования.
⏱Читать статью
3 479
Как мы рендерим видео на клиенте с помощью ffmpeg
#почитать
Обычно FFmpeg используют на сервере, но есть обертки и сборки для браузера, которые позволяют выполнять операции и на фронтенде. Сегодня речь пойдет о ffmpeg.wasm и настройке параметров для односекундной сборки видео, которое после просмотра пользователь может скачать.
В статье покажем, как выглядит решение. Оно подойдет и для бэкенда, но нам пришлось обрабатывать и склеивать ролики именно на клиенте.
⏱Читать статью
3 479
Реализуем собственный Promise в JavaScript
#почитать
В статье реализуется собственный Promise в JavaScript. Разбираем базовую модель промисов, проблемы наивной реализации и то, как они решаются в спецификациях Promises/A+ и ECMAScript.
Материал предназначен для разработчиков, которые используют Promise и хотят понять, как он работает внутри.
⏱Читать статью
3 479
Как мы собрали фронт без фронтендера за неделю: AI-ассистент + дизайн-система
#почитать
У нас случилась классика: бэкенд уже отдает данные, бизнес ждет экран «вчера», а фронтендера в команде нет и ближайшие фронты заняты.
Мы рискнули и собрали MVP‑интерфейс за неделю — без выделенного фронта, но на корпоративном стеке (Vue/TypeScript) и с дизайн‑системой.
Это не история «AI все сделал». Это история про то, как правила + дизайн‑система + ревью как для джуна могут делать из AI‑ассистента нормальный инструмент, а не генератор мусора.
⏱Читать статью
3 479
Как строить переиспользуемые фронтенд-компоненты: пример кнопки лайк
#почитать
Когда проект становится больше, неизбежно появляется вопрос: как писать интерфейс так, чтобы потом не переписывать одно и то же десятки раз?
⏱Читать статью
3 479
Инвертирование равенства. Как реже стрелять себе в ногу в C-подобных языках
#почитать
Поговорим о классической (и болезненной) проблеме кодирования «присваивание вместо равенства» которая в любой момент может создать очень много проблем. О логическом источнике этой ошибке, и о способах решения.
⏱Читать статью
3 479
Глобальная область видимости в JavaScript
#почитать
Как любой другой язык программирования, JavaScript позволяет создавать элементы доступные в любом месте приложения. И, как и с другими механизмами, JS тут имеет свои уникальные, но важные особенности, которые мы подробно сейчас рассмотрим.
Глобальная область видимости может принимать различные формы в зависимости от того как загружаются код JS.
⏱Читать статью
3 479
🤩 Начни ИТ-карьеру в Авито — одной из лучших* компаний для работы!
На Стажировке для разработчиков 4 направления для роста студентов — бэкэнд, фронтенд, тестирование и андроид. А ещё:
— конкурентная зарплата, её размер обсудим на интервью
— гибкий график от 25 часов в неделю на стажировке, легко совмещай с учёбой
— корпоративный ноутбук и доступ к базам знаний и библиотекам
— работа из офиса, полностью удалённо или в гибридном формате
— компенсация питания, консультаций с психологами и юристами
— продвинутый наставник и сообщество стажёров для обмена опытом
— реальные задачи, которые влияют на развитие продуктов Авито
— карьерные перспективы и рост: покажи себя и получи шанс стать частью команды.
🌟 Присоединяйся по ссылке!
*2 место в рейтингах работодателей от FutureToday 2026 и Хабр 2025
3 479
trackOpBits во Vue 3: как битовые маски ускоряют ReactiveEffect
#почитать
Для первой публикации я выбрал тему внутренней оптимизации реактивности во Vue 3 — trackOpBits и работу ReactiveEffect. Этот механизм почти не заметен при обычной работе с фреймворком, но он напрямую влияет на производительность рендера компонентов и поведение вложенных computed.
В статье разберём, какую проблему решает trackOpBits, как именно он используется внутри системы реактивности и почему эта оптимизация важна в реальных приложениях.
⏱Читать статью
3 479
Repost from N/a
🪐 Новые вакансии фронтендеров
🚀 Frontend разработчик в Ronix, 60 000 - 100 000 ₽
Подробнее ➡️
https://jobrocket.ru/ru/job/frontend-razrabotchik-ronix-ae07705e
🚀 Frontend Developer (React) в Kerka Development, 180 000 - 250 000 ₽
Подробнее ➡️
https://jobrocket.ru/ru/job/frontend-developer-react-kerka-development-65c15e2d
🚀 Frontend Developer в Партнер HaaS-платформы, до 250 000 ₽
Подробнее ➡️
https://jobrocket.ru/ru/job/frontend-developer-partner-haas-platformy-cd44a068
🚀 Frontend / Backend Developer в The Thinksters, oт 300 000 ₽
Подробнее ➡️
https://jobrocket.ru/ru/job/frontend-backend-developer-the-thinksters-6ba69011
🚀 AQA (JS/React) в BotConversa, 220 000 - 260 000 ₽
Подробнее ➡️
https://jobrocket.ru/ru/job/aqa-jsreact-botconversa-a95b860d
🚀 Frontend Developer в MIA Dev, 200 000 - 250 000 ₽
Подробнее ➡️
https://jobrocket.ru/ru/job/frontend-developer-mia-dev-17ca0528
🚀 Frontend Developer в Продукт в стадии MVP (Первичная разработка и запуск, 180 000 - 220 000 ₽
Подробнее ➡️
https://jobrocket.ru/ru/job/frontend-developer-produkt-v-stadii-mvp-pervichnaya-razrabotka-i-zapusk-9d036106
Больше вакансий здесь ⤵️
https://jobrocket.ru/ru?categories=frontend&page=1
3 479
Тихие сбои React Compiler и как их исправить
#почитать
React Compiler обещает избавить от ручной мемоизации и вернуть разработчику фокус на логику интерфейса. Но за этой когнитивной разгрузкой скрывается тонкий риск: в ряде случаев компилятор тихо откатывается к обычному поведению React, и вы узнаёте об этом только по деградации UX. В статье — практический разбор «тихих» сбоев, ограничений синтаксиса и способа заставить сборку честно сигнализировать о проблемах через ESLint.
⏱Читать статью
3 479
View Transitions API: полное руководство по плавным переходам в браузере
#почитать
View Transitions API часто показывают на демках с одной карточкой. Но когда вы начнёте внедрять его в реальный проект с асинхронной загрузкой, React, кастомными анимациями и поддержкой старых браузеров, — окажется, что демки умалчивают о массе деталей.
⏱Читать статью
3 479
Асинхронные циклы в JavaScript: как избежать ловушек
#почитать
Запускаете три независимых API-запроса в цикле, а они выполняются друг за другом, заставляя пользователя ждать втрое дольше. Или получаете массив [Promise, Promise, Promise] вместо ожидаемых данных. Всё дело в том, как вы используете await, map и forEach.
⏱Читать статью
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
