идея с установкой связей через init файл в том, что это даёт большую свободу при импорте — если init файл импортирует (ссылается на) сущности из каких-либо других секций приложения, то индекс папки останется свободным от этой ссылки, ведь при его импорте init не подключается а значит не подключается и всё то, на что тот ссылается это и даёт свободу от циклов
более того, в этом случае корневые init файлы становятся тогглами для фич, так как если убрать init какой-либо фичи, то её связи не будут установлены, что означает отсутствие инициализации фичи
в файлах описываем изолированную логику когда нужно взаимодействие между файлами – пишем ее в index.
По идее это ведь должно помочь с удобным разделением логики разных организмов?
И возможно поможет с цикличными импортами? Что думаете?
я бы вместо model1.js и model2.js создал бы папки model1 и model2... в каждой папке было бы 3 файла: index.js - публичный апи папки, init.js - модель поведения (связи), model.js - апи модели (сущности)
может файлов больше, зато масштабируется без проблем и даёт много плюсов (по моему мнению)
таким образом можешь дробить большие модели сколько угодно, или фичи
в репле есть возможность делать тайпчекинг при использовании flow (включается в табе settings). эта возможность влечёт за собой навешивание логики обработки и вывода ошибок, требует подключения внешней библиотеки для работы с апи тайпчекера @zerobias/codebox и делает пару прямых мутаций html (так вот реализовали 😅)
и если мы закомментируем строку с инициализацией flow, то тем самым сразу избавим проект от всей логики, сайд эффектов и зависимостей, требуемых для работы этой секции приложения
ведь при обычном подходе, разрешающем циклы, избавиться от лишних зависимостей заметно сложнее: одну половину файла может использовать одна фича, другую — другая, сам он импортирует что-нибудь из третьей, а сверху всего этого — какой-нибудь импорт библиотеки с сайд эффектами, лишающий нас возможности избавиться от него если данный файл с кодом используется где либо ещё
я бы вместо model1.js и model2.js создал бы папки model1 и model2... в каждой папке было бы 3 файла: index.js - публичный апи папки, init.js - модель поведения (связи), model.js - апи модели (сущности)
может файлов больше, зато масштабируется без проблем и даёт много плюсов (по моему мнению)
таким образом можешь дробить большие модели сколько угодно, или фичи