Привет, снова Костя из Cloud.ru. Мы поговорили уже про as для типобезопасного полиморфизма, asChild для композиции и FACC для вариативного дизайна. Но что, если я скажу, что есть способ комбинировать логику еще элегантнее и не смешивать ее с отрисовкой? Сегодня разбираем полиморфные декораторы — HOC на стероидах.Проблема: композиция логики превращается в матрешкуВспомним наши прошлые примеры. Хотим кнопку, которая:генерирует href по шаблону,отправляет метрику по клику,и все это полиморфно!as по…
Обзор на браузерные API, которые стали Widely available в ноябре 2025. Раз в месяц я буду вам напоминать, что вы уже можете использовать в проде. Каждый месяц выходят новые CSS-свойства, HTML-атрибуты, JavaScript-методы и WebAPI, но применять в проде мы их конечно же не будем. 2.5 года назад также каждый месяц выходили новые фичи в браузере, а вот их уже пора начинать применять.Как мы понимаем, что уже можно использовать в проде?У каждой компании, да что уж там компании, у каждой команды в комп…
Окей, заголовок звучит максимально самоуверенно, я понимаю. Но насколько мне удалось нагуглить — это действительно первая попытка сделать что-то подобное. Если я не прав — напишите в комментах, я с удовольствием посмотрю на альтернативы. А пока давайте я расскажу, что это за зверь такой и зачем он вообще нужен.Предыстория, или как я дошёл до жизни такойВсё началось с микрофронтендов. Знаете, это когда у вас один проект, но внутри него живёт Vue, React, и ещё какой-нибудь легаси на jQuery, котор…
Эта статья — перевод оригинальной статьи «Perfectly Pointed Tooltips: To The Corners».1 часть - Идеально размещённые тултипы: база2 часть - Идеально размещённые тултипы: все четыре стороныТакже я веду телеграм канал «Frontend по‑флотски», где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеГотовы к последнему челленджу?Мы продолжаем делать тултипы, которые “следуют” за своим якорем, и на этот раз поработаем с новыми позициями и изучим новые приёмы. Я буду исходить из то…
Иллюстрация к статьеПредставим распространённые ситуации:пользователь вашего сайта пытается выложить фото или другое изображение, но натыкается на фрюстрирующее сообщение об ошибке, гласящее, что размер файла непозволительно большой;ваше сайт активно использует изображения, присылаемые пользователями, и по мере роста аудитории, вы всё чаще сталкиваетесь с падением производительности серверов, а то и с падением оных.Данная статья предлагает решение данных проблем путём изменения и/или создания ф…
TL;DR: В этой статье я хочу показать, почему распространённая фраза "не занимайтесь преждевременной оптимизацией" почти всегда используется неправильно, особенно в современных фронтенд-проектах. Я посмотрю на исторический контекст, разберу, что именно Кнут называл оптимизацией, и почему многие вещи, которые считаются "преждевременной оптимизацией", на деле — нормальная инженерная дисциплина.Я фронтендер, пишу на React, регулярно делаю код-ревью в проекте, над которым работаю сов…
Обработка ошибок в JavaScript всегда была немного хаотичной. Получить ошибку легко, но отследить ее первоисточник бывает очень сложно. Именно здесь и приходит на помощь свойство cause.❯ Проблема классической обработки ошибокВ многоуровневом коде (например, сервисы, вызывающие другие сервисы, функции-обертки, «всплывающие» ошибки и т.д.) легко потерять нить того, что именно пошло не так. Обычно код при этом выглядит примерно так:try { JSON.parse('{ bad json }'); } catch (err) { throw…
Видео стало неотъемлемой частью нашей жизни: мы смотрим его на смартфонах, ноутбуках и всё чаще — на телевизорах. Несмотря на то, что видеосервисы традиционно ориентировались на мобильные устройства, за длинным контентом пользователи идут именно на большие экраны, и это подтверждается ростом времени просмотра. Сегодня среднее дневное время смотрения VK Видео на Smart TV достигает 216 минут.И тут начинается самое интересное: телевизоры — это особый мир со своими капризами и законами. Официальные…
Казалось бы что может быть проще и банальнее, чем обновить зависимости во фронтенд-проекте? Но зачастую даже опытные мидлы делают это не правильно и ставят себе палки в колеса. Давайте разберемся почему так происходит и как этого избежать.Как обычно происходит обновление?Типичный сценарий выглядит так:Обновляем зависимости в package.json.Чиним то, что сломалось.Что здесь не так? На первом этапе мы не знаем, сколько времени уйдет на устранение багов, которые могут появиться после обновления. Есл…