ребят, а есть какая-та сейчас актуальная архитектура для эффектора? Ну тип я помню как-то прочитал у совы про $, fx, past simple и делил по фичам и писал в один файлик сначала все евенты, эффекты и сторы, а потом где-то ниже описывал все все связи.
Но время от времени слышал про инит файлы и прочее, есть ли сейчас это в виде текста?
Мне нравится такой подход: создавать юниты эффектора в одном файле, а их взаимодействия - в другом.
Выглядит это так:
model.js - интерфейс модели (сущности),
init.js - модель поведения (связи)
Удобно, когда в одном файле описано, что из себя представляет модель. Заглянув в этот файл, можно быстро получить представление о модели, её состояниях и методах, до погружения в бизнес-логику. Создавая юниты в одном файле, мы описываем интерфейс модели (как интерфейс объекта в типах).
Получается, что вся логика находится в одном файле (init), а создание сущностей мы выносим в отдельный (model), чтобы видеть структуру модели, т.е. что она из себя представляет. В итоге, интерфейс и поведение разделены.
Такой подход также позволяет импортить то, что тебе нужно, и не париться насчёт циклических зависимостей. Модели/подмодели могут перекрёстно зависеть друг от друга, это развязывает руки и упрощает работу - не нужно ломать голову каждый раз, что от чего должно зависеть, чтобы не было циклов.
В model у меня только создание юнитов! Там нет restore, createApi. Также нет .map и combine - они описываются через .on и sample (в init файле).
В init у меня взаимодействия сущностей друг с другом, .on, .use, sample, guard, то есть вся бизнес-логика модели. Из init ничего не экспортируется! В нём можно создавать вспомогательные юниты (для внутреннего использования) через .map, combine. Все init-ы импортируются в init файле на уровень выше (например, features/init.ts, а он в корне).