
Cordis: плагинная архитектура как новый слой композиции JS/TS‑приложений
Cordis превращает плагины в базовые строительные блоки приложений, управляя зависимостями, эффектами и жизненным циклом. Сравнены три способа доставки: виртуальные модули, Module Federation и DSH.
В статье на Habr AI рассматривается Cordis — фреймворк, который выводит плагины из роли «надстройки» в ядро архитектуры JavaScript/TypeScript‑приложений. Плагин в Cordis не просто добавляет функциональность, а становится основной единицей композиции, отвечающей за управление зависимостями, эффектами и жизненным циклом компонентов.
Автор сравнивает три подхода к доставке клиентских плагинов:
- Виртуальные модули в общем графе сборки – плагины включаются в единую сборку, что упрощает статический анализ, но усложняет независимую версионирование.
- Module Federation (Webpack) – позволяет динамически загружать отдельные микрофронтенды, но требует согласования общего runtime и может приводить к конфликтам зависимостей.
- Собственная модульная система DSH (DeepSeek Harness) – специализированный механизм, предлагающий декларативное описание плагинов, автоматический контроль жизненного цикла и изоляцию зависимостей.
Cordis сравнивается с микросервисами и оркестрацией в Kubernetes: как микросервисы разбивают серверную логику, так и плагины разбивают клиентскую, позволяя независимым командам разрабатывать, тестировать и деплоить свои части без влияния на остальную систему. При этом автор отмечает ограничения: повышенная сложность инфраструктуры, необходимость строгих контрактов между плагинами и потенциальные проблемы с производительностью при динамической загрузке.
Статья завершается обсуждением практических сценариев: крупные корпоративные дашборды, SaaS‑продукты с расширяемой функциональностью и проекты, где команды работают в изоляции, но обязаны интегрироваться в единый UI‑слой.
Cordis открывает путь к более гибкой и масштабируемой клиентской архитектуре, позволяя командам работать автономно, как с микросервисами. Для разработчиков это значит меньше конфликтов зависимостей и возможность быстрее выпускать новые функции. Однако стоит учитывать рост сложности сборки и необходимость продуманного управления версиями плагинов.
