Frontend
1. Компонент
В наших проектах мы следуем следующей архитектуре:
1.1. Слой компонентной логики
Логика и обработка данных. Обычно поддерживается разработчиками.
1.1.1. Provider
Основные вопросы: 1. С какими бизнес-данными работает компонент? 2. Какую бизнес-логику компонент реализует?
Ответственный за: 1. Получение и подготовку данных из store 2. Подготовка действий 3. Реализация бизнес-логики
Имя файла: <component>.provider.tsx
Экспортирует mapStateToProps
и / или mapDispatchToProps
.
Пример:
1.1.2. Presenter
Stateful компонент.
Основные вопросы: Что компонент делает?
Ответственный за: 1. Хранение и управление состоянием UI 2. Реализация всех методов (любые обработчики, компонентная логика)
Имя файла: <component>.presenter.tsx
Экспортируемое имя класса: <Component>Presenter
Пример:
1.2. Презентационный слой
Только отображение UI.
1.2.1. Styles
Основной вопрос: Как компонент выглядит?
Имя файла: <component>.styles.tsx
Пример:
1.2.2. View
Основной вопрос: Что компонент показывает?
Ответственный за: Вёрстку без состояния, обработчиков и т.д.
Filename: <component>.view.tsx
Экспортируемое имя класса / функционального компонента: <Component>View
Пример:
1.2.3. Animation
Основной вопрос: Как компонент меняет свои состояния?
Ответственный за: Хранение состояний какой-либо анимации как для Framer Motion, так и для CSS
Имя файла: <component>.animation.ts
Пример:
1.3. Index
Директория каждого компонента должна содержать файл index
с экспортируемым <Component>
. Если компонент содержит слой Prodider
, то этот компонент должен подключать mapStateToProps
и / или mapDispatchToProps
. В остальных случаях просто переэкспортировать <Component>
.
Пример с существующим Provider
слоем:
Пример с существующего Provider
слоя:
Last updated