Комментарии 11
Непонятно, куда класть модалки и утиль
то есть файл хелперс таким и остался после всего этого феншуя?
Как бы классика которой 10 лет

В
shared
— только общее.
Получается, если ты пишешь качественный переиспользуемый код, а не прибиваешь его гвоздями к одному единственному месту использования, то весь этот код надо класть в shared?
В
entities
— только бизнес-логика.
А что такое "бизнес-логика" на фронтенде, который зачастую сам по себе является лишь отображением данных с сервера?
В
features
— только действия.
Почему бы не назвать это actions
?
В
widgets
— только блоки.
А если я хочу приложения встраивать друг в друга - их тоже в виджеты класть?
В
pages
— только маршруты.
А если какая-то страница показывается в зависимости от состояния в сессии, а не в ссылке - её сюда класть или нет?
В
app
— точка входа и зависимости.
А если у меня несколько приложений с 95% общего кода - их все сюда класть или в отдельные репозитории копипастить?
А чем FSD лучше DDD ?
Я бы сказал так - лучше с FSD чем без него)
Как правило в реакт проектах ребята просто раскладывают компоненты слайсы фичи утилиты и все прочее в рандомные папки, а с FSD хоть какой то полупорядок будет.
Была папка utils как Война и мир, а теперь папка shared как две войны и мир стала)
Подход удобен, когда страницы ± похожи между собой. А когда у тебя 50 экранов высотой в 3 экрана и общее между ними только хедер, от чего папка shared по методологии становится вместилещем для 300+ блоков - тут уж не до смеха. Ведь по FSD мы импортируем все файлы из нижних уровней, а на текущем должно быть только то, что к нему относится.
В папке shared только то, что используется в нескольких местах одновременно, если у вас блок используется только на одной странице, то в shared его класть очевидно не надо
Методология подразумевает, что они будут лежать именно там, т.к. на слоях выше им просто нет места + нет понимания, будет ли это переиспользоваться в будущем. Каждая папка подразумевает свой слой составных частей приложения. В entities, который находится над shared, уже просто нет места для какой-то уникальной кнопки. А ещё выше для неё тем более не найдётся места, т.к. уже целые фичи да процессы лежат.
P.S. ознакомился сейчас с документацией ещё раз. Судя по всему, эту проблему уже решили, дав возможность на любой слое использовать слайсы (кроме App и Shared) и сегменты, что в принципе позволяет на двух соседних страницах или в двух соседних виджетах создать папки ui, где будут лежать их уникальные компоненты.
Отрицание, торг, депрессия и принятие: путь фронтендера к Feature-Sliced Design на React