lite-fsm
lite-fsm — минималистичная и эффективная библиотека для работы с конечными автоматами в JavaScript и TypeScript проектах. Она помогает структурировать и упорядочить логику приложения через формализацию состояний, событий и переходов между ними.
О библиотеке
lite-fsm предлагает простой способ создания надёжных и предсказуемых систем через декларативное описание их поведения. В основе библиотеки лежит концепция конечных автоматов — математической модели, позволяющей организовать логику вашего приложения в виде набора состояний и правил перехода между ними.
С помощью lite-fsm вы сможете:
- Структурировать сложную интерактивную логику UI-компонентов
- Организовывать и контролировать жизненные циклы процессов
- Упрощать тестирование и отладку кода
- Создавать прозрачные и понятные потоки управления данными
- Избегать ошибок, связанных с неучтёнными состояниями
Библиотека специально разработана с фокусом на простоту и производительность, что делает её подходящей как для небольших компонентов, так и для сложных систем.
Почему конечные автоматы?
- Ясная логика: Когда все возможные состояния и переходы определены явно, код становится более читаемым и поддерживаемым
- Надёжность: Нельзя попасть в неопределённое состояние или выполнить недопустимый переход — все варианты учтены на этапе проектирования
- Самодокументируемость: Структура автомата естественным образом документирует поведение компонента или процесса
- Снижение сложности: Даже запутанная бизнес-логика становится более управляемой благодаря разделению на дискретные состояния
- Наглядность: Состояния и переходы явно описаны, их легко визуализировать, что облегчает анализ кода проекта
- Лёгкое тестирование: Полный детерминизм упрощает тестирование
Ключевые возможности
- Лаконичный API: Интуитивно понятный интерфейс без лишних абстракций
- Архитектурный фреймворк: Готовые паттерны для управления состоянием приложения и организации бизнес-логики
- Интеграция с React: Специализированные хуки и компоненты для простого встраивания в React-приложения
- Расширяемость через middleware: Возможность встраивать дополнительную функциональность по аналогии с Redux middleware
- Надёжная типизация: Поддержка TypeScript с выводом типов и проверками на уровне компиляции
- Оптимальный размер: Минимальный вес зависимостей для быстрой загрузки
- Поддержка advanced паттернов: Реализация концепций statecharts для сложных приложений
- Прозрачная иммутабельность: Встроенная поддержка Immer
Быстрый старт
Установка
lite-fsm доступен через npm и другие популярные пакетные менеджеры.
npm install lite-fsmПример использования
import { createMachine, MachineManager } from "lite-fsm";
const playback = createMachine({
config: {
IDLE: {
DO_INIT: "PAUSED",
},
PAUSED: {
DO_PLAY: "PLAYING",
},
PLAYING: {
DO_PAUSE: "PAUSED",
TIME_UPDATE: null,
},
END: {},
},
initialState: "IDLE",
initialContext: {
currentTime: null,
duration: null,
remainingTime: null,
},
effects: {
PLAYING: ({ services }) => services.playerService.play(),
PAUSED: ({ services }) => services.playerService.pause(),
},
});
const manager = MachineManager({ playback });
manager.setDependencies({
services: {
playerService: {
play: () => Promise.resolve(),
pause: () => Promise.resolve(),
},
},
});
manager.onTransition((prevState, nextState) => {
console.log("[onTransition]", { prevState, nextState });
});
manager.transition({ type: "DO_INIT" });
manager.transition({ type: "DO_PLAY" });
manager.transition({
type: "TIME_UPDATE",
payload: { currentTime: 0, duration: 60, remainingTime: 60 },
});
const { state, context } = manager.getState().playback;React: Для интеграции lite-fsm с React используйте специализированные хуки и компоненты, описанные в разделе Использование с React.
TypeScript: Если вы используете TypeScript, обязательно ознакомьтесь с разделом TypeScript для получения информации о строгой типизации и полном использовании возможностей статической проверки типов.
Куда дальше?
После ознакомления с основами, вы можете изучить другие разделы документации:
- Конечные автоматы: Подробное описание концепций FSM и statecharts
- Продвинутые концепции: Углубленное изучение возможностей библиотеки
- Лучшие практики: Рекомендации по эффективному использованию
- Использование с React: Руководство по интеграции с React-приложениями
- Использование lite-fsm: Подробное руководство по использованию библиотеки
- API Справочник: Полная документация по всем функциям и параметрам
- Middleware: Расширение функциональности с помощью промежуточных обработчиков
- Сравнение: Сравнение lite-fsm с другими решениями для управления состоянием
- Примеры: Готовые решения типовых задач и паттерны использования