Category : javascript

javascript
Грани полиморфизма React: полиморфные декораторы

Привет, снова Костя из Cloud.ru. Мы поговорили уже про as для типобезопасного полиморфизма, asChild для композиции и FACC для вариативного дизайна. Но что, если я скажу, что есть способ комбинировать логику еще элегантнее и не смешивать ее с отрисовкой? Сегодня разбираем полиморфные декораторы — HOC на стероидах.Проблема: композиция логики превращается в матрешкуВспомним наши прошлые примеры. Хотим кнопку, которая:генерирует href по шаблону,отправляет метрику по клику,и все это полиморфно!as по…

  • среда, 3 декабря 2025 г. в 00:00:02
javascript
Baseline: ноябрь 2025

Обзор на браузерные API, которые стали Widely available в ноябре 2025. Раз в месяц я буду вам напоминать, что вы уже можете использовать в проде. Каждый месяц выходят новые CSS-свойства, HTML-атрибуты, JavaScript-методы и WebAPI, но применять в проде мы их конечно же не будем. 2.5 года назад также каждый месяц выходили новые фичи в браузере, а вот их уже пора начинать применять.Как мы понимаем, что уже можно использовать в проде?У каждой компании, да что уж там компании, у каждой команды в комп…

  • вторник, 2 декабря 2025 г. в 00:00:05
javascript
Первая в мире библиотека Web Components в духе shadcn. Серьёзно, я проверял

Окей, заголовок звучит максимально самоуверенно, я понимаю. Но насколько мне удалось нагуглить — это действительно первая попытка сделать что-то подобное. Если я не прав — напишите в комментах, я с удовольствием посмотрю на альтернативы. А пока давайте я расскажу, что это за зверь такой и зачем он вообще нужен.Предыстория, или как я дошёл до жизни такойВсё началось с микрофронтендов. Знаете, это когда у вас один проект, но внутри него живёт Vue, React, и ещё какой-нибудь легаси на jQuery, котор…

  • вторник, 2 декабря 2025 г. в 00:00:04
javascript
Идеально размещённые тултипы: по углам

Эта статья — перевод оригинальной статьи «Perfectly Pointed Tooltips: To The Corners».1 часть - Идеально размещённые тултипы: база2 часть - Идеально размещённые тултипы: все четыре стороныТакже я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеГотовы к последнему челленджу?Мы продолжаем делать тултипы, которые “следуют” за своим якорем, и на этот раз поработаем с новыми позициями и изучим новые приёмы. Я буду исходить из то…

  • вторник, 2 декабря 2025 г. в 00:00:03
javascript
Изменение размера выгружаемых файлов изображений в браузере

Иллюстрация к статьеПредставим распространённые ситуации:пользователь вашего сайта пытается выложить фото или другое изображение, но натыкается на фрюстрирующее сообщение об ошибке, гласящее, что размер файла непозволительно большой;ваше сайт активно использует изображения, присылаемые пользователями, и по мере роста аудитории, вы всё чаще сталкиваетесь с падением производительности серверов, а то и с падением оных.Данная статья предлагает решение данных проблем путём изменения и/или создания ф…

  • понедельник, 1 декабря 2025 г. в 00:00:03
javascript
Ответ фронтендера на «Не занимайтесь преждевременной оптимизацией»

TL;DR: В этой статье я хочу показать, почему распространённая фраза "не занимайтесь преждевременной оптимизацией" почти всегда используется неправильно, особенно в современных фронтенд-проектах. Я посмотрю на исторический контекст, разберу, что именно Кнут называл оптимизацией, и почему многие вещи, которые считаются "преждевременной оптимизацией", на деле — нормальная инженерная дисциплина.Я фронтендер, пишу на React, регулярно делаю код-ревью в проекте, над которым работаю сов…

  • понедельник, 1 декабря 2025 г. в 00:00:02
javascript
Цепочка ошибок в JavaScript: удобная отладка кода с помощью Error.cause

Обработка ошибок в JavaScript всегда была немного хаотичной. Получить ошибку легко, но отследить ее первоисточник бывает очень сложно. Именно здесь и приходит на помощь свойство cause.❯ Проблема классической обработки ошибокВ многоуровневом коде (например, сервисы, вызывающие другие сервисы, функции-обертки, «всплывающие» ошибки и т.д.) легко потерять нить того, что именно пошло не так. Обычно код при этом выглядит примерно так:try { JSON.parse('{ bad json }'); } catch (err) { throw…

  • воскресенье, 30 ноября 2025 г. в 00:00:02
javascript
Как мы улучшили качество сервиса VK Видео на SmartTV

Видео стало неотъемлемой частью нашей жизни: мы смотрим его на смартфонах, ноутбуках и всё чаще — на телевизорах. Несмотря на то, что видеосервисы традиционно ориентировались на мобильные устройства, за длинным контентом пользователи идут именно на большие экраны, и это подтверждается ростом времени просмотра. Сегодня среднее дневное время смотрения VK Видео на Smart TV достигает 216 минут.И тут начинается самое интересное: телевизоры — это особый мир со своими капризами и законами. Официальные…

  • пятница, 28 ноября 2025 г. в 00:00:05
javascript
Как правильно обновлять зависимости в проекте

Казалось бы что может быть проще и банальнее, чем обновить зависимости во фронтенд-проекте? Но зачастую даже опытные мидлы делают это не правильно и ставят себе палки в колеса. Давайте разберемся почему так происходит и как этого избежать.Как обычно происходит обновление?Типичный сценарий выглядит так:Обновляем зависимости в package.json.Чиним то, что сломалось.Что здесь не так? На первом этапе мы не знаем, сколько времени уйдет на устранение багов, которые могут появиться после обновления. Есл…

  • пятница, 28 ноября 2025 г. в 00:00:04