Мне нужны ваши отзывы, чтобы уточнить это! 😁

Несмотря на то, что пользователей не волнует ваша файловая структура и правильной структуры не существует, у меня есть привычка экспериментировать с ними в своих приложениях 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.

Я намеренно исключил тесты маршрутизатора, хранилища, корневого редуктора и модульных тестов, потому что все это субъективно.

Главное - думать о своих функциях как о совокупности компонентов, редукторов и действий, которые являются просто функциями.

Опять же, это новость для меня, и я хотел бы получить ваши отзывы. Пожалуйста, оставьте комментарий и поделитесь, чтобы узнать мнение других.

До скорого!

Береги себя,
Язид Бзадоу