Философия Reactive Engine
В мире современной фронтенд-разработки UI-фреймворки взяли на себя слишком много ролей. Они управляют не только отображением, но и тем, как живут, обрабатываются и передаются наши данные.
@pravosleva/reactive-engine создан из убеждения, что бизнес-логика приложения должна быть суверенной. Она не должна зависеть от циклов рендеринга React, хуков Vue или архитектуры Svelte.
Три принципа проектирования
1. UI — это просто тонкая обертка (Framework Agnostic)
Ваш код авторизации, корзины покупок или работы с сокетами должен запускаться и тестироваться в обычном терминале через Jest/Vitest без эмуляции браузера.
- Как это помогает: Если завтра ваша компания решит перейти с React на Vue или Solid, вы перепишете только компоненты интерфейса. Вся бизнес-логика останется нетронутой.
2. Принцип минимальной осведомленности
Компонент интерфейса должен знать о состоянии ровно столько, сколько ему нужно для вывода на экран.
- Если кнопке нужна строка
Юзер: Иван, она не должна перерисовываться, когда у объекта юзера меняется массивpermissions. - Атомарные сигналы гарантируют, что обновление графа реактивности происходит на уровне точечных мутаций, минуя тяжелые алгоритмы сравнения виртуального дерева (Virtual DOM Virtual-diffing).
3. Предсказуемость вместо магии
Мы отказались от неявных прокси-объектов, которые магически глубоко отслеживают любые изменения. В Reactive Engine каждое действие разработчика явно:
- Вы явно создаете источник данных (
signal). - Вы явно объявляете производную зависимость (
computed). - Вы защищены от цикличных обновлений, потому что автоматический пакетный сборщик (Batching) не позволит запустить рендер посередине цепочки изменений.
Для кого этот движок?
- Для авторов сложных интерфейсов: Интерактивные карты, дашборды с графиками, аудио/видео плееры, где стандартный стейт вызывает критические просадки FPS.
- Для долгоживущих Enterprise-проектов: Где логика пишется на годы, а UI-тренды меняются каждые пару лет.
- Для перфекционистов производительности: Для тех, кто устал бороться с лишними ререндерами и бесконечными
useCallback/useMemo.