Обзор и назначение
1.0.0Размер (core + integration): 1.78 KB + 0.33 KBПокрытие: 94.93 % в 498 тестах
При использовании MobX, реактивности Vue, сигналов Solid.js и других реактивных систем сложно поддерживать синхронизацию с нереактивными роутерами, которые часто привязаны к UI или структуре файлов.
Для решения этой проблемы был создан Reactive Route, работающий с любыми реактивными библиотеками и фреймворками, что значительно облегчает работу с разными стеками.
Доступны готовые интеграции для:
- React + MobX
- React + Observable
- Preact (без compat) + MobX
- Preact (без compat) + Observable
- Solid.js + реактивность Solid.js
- Solid.js + MobX
- Solid.js + Observable
- Vue + реактивность Vue
Преимущества
Библиотека следует строгой философии — минимальный размер, максимальная типизация, обязательная валидация URL-параметров, отказоустойчивость и поддержка SSR / Widget / MPA режимов.
Reactive Route — это отдельный слой роутинга, побуждающий не разбрасывать конфигурацию по файлам и компонентам. В нем нет редиректов по частичным путям и вложенности роутов, что позволяет использовать статический анализ TypeScript (а значит — автоматический рефакторинг, быстрые переходы и автодополнение + стабильную генерацию с помощью ИИ моделей).
Дерево компонентов в проекте остается чистым, а на структуру папок и имена файлов не накладывается ограничений.
Асинхронные методы beforeEnter и beforeLeave позволяют контролировать доступ и загружать данные в сторы, а beforeComponentChange - проектировать модульные архитектуры с поддержкой code-splitting не только для компонентов страниц, но и для других сущностей (и "разрушать" их при переходе на другие страницы), с бесшовной поддержкой SSR.
Тщательно спроектированная поддержка реактивности позволяет писать приложения с гранулярными ререндерами, не сталкиваясь с неконсистентностью вызова реакций и механизмов mount / unmount UI фреймворков при изменении состояния маршрута.
Поддержка браузеров
Reactive Route использует Dual Packaging (CJS и ESM автоматически выбираются исходя из конфигурации проекта) для максимальной совместимости. Для работы без полифиллов необходимы как минимум Chrome 49, Firefox 29, Safari 10.1 и Node.js 10 если используется SSR, из-за необходимости наличия URLSearchParams.
Вы можете сразу перейти к Примерам для вашего стека или следующей секции документации для ознакомления со схемой работы библиотеки.