Category : javascript

javascript
withComponentInputBinding: уменьшаем связанность, инвертируем зависимости

Почти все Angular проекты, над которыми я работаю, содержат routed-компоненты, то есть компоненты подключаемые через конфигурацию роутера в component и loadComponent и отображаемые в <router-outlet/>. Такие компоненты, как правило, знают, где взять нужные им данные, когда их загрузить и что показать, пока данных нет. Ещё их называют «умными» или smart containers.Суть проблемыТипичный routed-компонент у меня выглядел так:// routes.ts const routes: Routes = [ /* ... */ { path: &#39…

  • понедельник, 7 сентября 2026 г. в 00:00:10
javascript
Cordis: плагинная архитектура как новый слой композиции JS/TS-приложений

Что изменится, если плагин станет не дополнением, а основной единицей архитектуры приложения? На примере Cordis и DeepSeek Harness разберём, как среда композиции управляет зависимостями, эффектами и жизненным циклом компонентов.Сравним три способа доставки клиентских плагинов: виртуальные модули в общем графе сборки, Module Federation и собственную модульную систему DSH. Сопоставим Cordis с микросервисами и Kubernetes, обсудим его ограничения и роль в разработке, которую ведут независимые коман…

  • понедельник, 7 сентября 2026 г. в 00:00:08
javascript
Делимся состоянием приложения через URL

Порой пользователю сайта нужно поделиться не просто ссылкой на страницу, но и её текущим состоянием: настройкой фильтров, содержимым редактора и так далее. Обычно для этого достаточно query-параметров, но по мере увеличения объёма данных приходится отдельно думать об их кодировании и сжатии.Я столкнулся с такой проблемой при создании визуального редактора JSON Schema Schemagic, в котором пользователь может быстро создать схему и поделиться ею. На сайте нет регистрации, а схемами можно делиться …

  • понедельник, 7 сентября 2026 г. в 00:00:08
javascript
Одна цифра сломала QR. Почему успешного чтения недостаточно

QR версии 8-H: внешне обычная матрица и ошибочное число блоков, 5 вместо 6Одна строка, два QR одинакового размера. Белое поле, три привычных квадрата по углам. Один возвращает исходные данные. Из второго два декодера не смогли извлечь ничего.Если сравнивать маленькие квадраты по одному, различия видны. Но какое из двух изображений исправно? Ни один из них не выглядит сломанным.Ошибка нашлась в таблице: для версии 8 с уровнем коррекции H мы указали пять блоков вместо шести. При подготовке этой с…

  • воскресенье, 6 сентября 2026 г. в 00:00:07
javascript
Мой тур по играм

Разумеется, в виду имеются старые игры. Игры детства. В какой-то момент, захотелось их вспомнить. Многие скажут, что есть DOS Zone и будут правы, но что может сравниться с тем, чтобы запустить любимую игру у себя на компьютере, локально, пусть даже и внутри Internet-браузера? Ну и сама возможность разобраться, пусть даже и довольно поверхностно, со всеми этими JS-DOS технологиями дорогого стоит. Начать это увлекательное приключение проще всего с create-dosbox. Тут даже не нужно ничего устанавл…

  • суббота, 5 сентября 2026 г. в 00:00:15
javascript
Как виджет для интернет‑магазина чуть не спалил мой iPhone: Lottie vs видео‑спрайты на телефонах

Я делаю встраиваемый виджет‑конфигуратор: карточка товара с интерактивным сравнением моделей, режимов, габаритов и комплектации — всё с анимациями. Ничего эзотерического — обычный веб‑виджет, который вставляется на страницу товара в интернет‑магазине.После активной разработки тестирование на реальном устройстве закончилось фиаско. iPhone 15 Pro Max — топовый флагман, который в теории должен переваривать веб‑анимации не моргнув, — троттлил и нереально грелся в районе процессора.Разница в темпера…

  • суббота, 5 сентября 2026 г. в 00:00:14
javascript
Как мы внедрили Knip в Angular-проект: от настройки до CI/CD

Привет! Я Незар, фронтенд-разработчик в Т-Банке. Наш Angular-проект достаточно крупный, и со временем в нем накопился неиспользуемый код. Это замедляет разработку, усложняет рефакторинг и вводит в заблуждение новых членов команды. А ручная очистка такого «мертвого» кода требует огромных трудозатрат и быстро перестает быть эффективной.Поэтому мы решили автоматизировать этот процесс с помощью Knip — статического анализатора для TypeScript. В статье я расскажу, как мы его настроили, интегрировали …

  • суббота, 5 сентября 2026 г. в 00:00:13
javascript
Vanilla Disintegrate — современные и эффектные анимации для веба

Vanilla Disintegrate — современные и эффектные анимации для вебаПредысторияКакие обычно бывают анимации в вебе? Появление, исчезновение, небольшой сдвиг, масштабирование. Они не обязательно плохие: чаще всего интерфейсу действительно не нужно ничего сложнее. Иногда лучшее решение — вообще не добавлять анимацию. Так интерфейс остаётся быстрым, понятным и не отвлекает от основной задачи. Но иногда хочется сделать один небольшой момент запоминающимся. Не длинную заставку и не тяжёлый спецэффект на…

  • суббота, 5 сентября 2026 г. в 00:00:12
javascript
Устарел ли next‑intl? И как реально оптимизировать такую архитектуру

Когда Next.js перешел с Pages Router на App Router и убрал встроенную поддержку i18n‑роутинга, библиотека next-intl стала стандартом по умолчанию для большинства команд. Ян Аманн проделал отличную работу по ее поддержке, и долгое время это был самый надежный выбор для мультиязычных проектов.is next‑intl outdatedЯ давно занимаюсь профилированием производительности интернационализированных приложений на Next.js. За последние годы вся React‑экосистема заметно сместилась в сторону серверных компоне…

  • пятница, 4 сентября 2026 г. в 00:00:09