Мне нужны ваши отзывы, чтобы уточнить это! 😁
Несмотря на то, что пользователей не волнует ваша файловая структура и правильной структуры не существует, у меня есть привычка экспериментировать с ними в своих приложениях React / Redux.
Два самых популярных, которые я пробовал, - по природе и по домену.
По природе
/src /components /reducers /actions /containers
По домену
/src /feature1 component.js reducer.js actions.js container.js /feature2 component.js reducer.js actions.js container.js
«По своей природе» идеально подходит для небольших приложений и новичков, изучающих React / Redux. Все говорит само за себя и находится в своем роде.
«По доменам» легче думать о более крупных приложениях, поскольку все разбито на то, что оно делает, а не то, что оно есть.
Я люблю их обоих, но чувствую, что чего-то не хватает. Ни один из них не поддается мантре «композиция выше наследования». Я не чувствую, что мои функции представляют собой композиции из множества компонентов, редукторов и действий.
Что, если мы объединим эти две популярные парадигмы?
Составная гибридная структура
/src /features /feature1 index.js component.js duck.js /components /ducks
Я считаю, что этот гибрид прекрасно поддерживает приложения, которые подчеркивают композицию.
Ключевые моменты:
/components
содержит HoC (компоненты высшего порядка) и другие простые компоненты. Это ваши строительные блоки./ducks
похож на/components
, за исключением уток высшего порядка (редукторы / действия). Реализует предложение уток Эрика Расмуссена.feature/index.js
- это контейнер, подключенный к Redux, состоящий из строительных блоков из/components
.feature/component.js
- это презентационный компонент без состояния, также составленный из/components
.feature/duck.js
состоит из/ducks
и используется в вашем магазине Redux.
Я намеренно исключил тесты маршрутизатора, хранилища, корневого редуктора и модульных тестов, потому что все это субъективно.
Главное - думать о своих функциях как о совокупности компонентов, редукторов и действий, которые являются просто функциями.
Опять же, это новость для меня, и я хотел бы получить ваши отзывы. Пожалуйста, оставьте комментарий и поделитесь, чтобы узнать мнение других.
До скорого!
Береги себя,
Язид Бзадоу