|
2 | 2 | sidebar_position: 1
|
3 | 3 | ---
|
4 | 4 |
|
5 |
| -# Обзор {#overview} |
| 5 | +# Обзор |
6 | 6 |
|
7 | 7 | **Feature-Sliced Design** (FSD) — это архитектурная методология для проектирования фронтенд-приложений. Проще говоря, это набор правил и соглашений по организации кода. Главная цель этой методологии — сделать проект понятнее и стабильнее в условиях постоянно меняющихся бизнес-требований.
|
8 | 8 |
|
9 | 9 | Помимо набора правил, FSD — это также целый инструментарий. У нас есть [линтер][ext-steiger] для проверки архитектуры вашего проекта, [генераторы папок][ext-tools] через CLI или IDE, а также богатая библиотека [примеров][examples].
|
10 | 10 |
|
11 |
| -## Подходит ли она мне? {#is-it-right-for-me} |
| 11 | +## Подходит ли FSD мне? {#is-it-right-for-me} |
12 | 12 |
|
13 | 13 | FSD можно внедрять в проектах и командах любого размера. Она подходит для вашего проекта, если:
|
14 | 14 |
|
@@ -87,35 +87,35 @@ _\* — эти слои, App и Shared, в отличие от других сл
|
87 | 87 |
|
88 | 88 | Слайсы, а также слои App и Shared, состоят из сегментов, а сегменты группируют код по его назначению. Имена сегментов не зафиксированы стандартом, но существует несколько общепринятых имен для наиболее распространенных целей:
|
89 | 89 |
|
90 |
| -- `ui` — говорит само за себя |
91 |
| -- `api` — тоже говорит само за себя |
| 90 | +- `ui` — всё, что связано с отображением: UI-компоненты, форматтеры дат, стили и т.д. |
| 91 | +- `api` — взаимодействие с бэкендом: функции запросов, типы данных, мапперы. |
92 | 92 | - `model` — модель данных: схемы валидации, интерфейсы, хранилища и бизнес-логика.
|
93 |
| -- `lib` — библиотечный код, который используется только внутри этого слайса. |
| 93 | +- `lib` — библиотечный код, который нужен другим модулям этого слайса. |
94 | 94 | - `config` — файлы конфигурации и фиче-флаги.
|
95 | 95 |
|
96 | 96 | Обычно этих сегментов достаточно для большинства слоев, поэтому свои собственные сегменты обычно создают только в Shared или App, но это не жёсткое правило.
|
97 | 97 |
|
98 | 98 | ## Преимущества {#advantages}
|
99 | 99 |
|
100 |
| -- **Однородность** |
| 100 | +- **Однородность** |
101 | 101 | Поскольку структура стандартизирована, проекты становятся более единообразными, что облегчает набор новых участников в команду.
|
102 | 102 |
|
103 | 103 | - **Устойчивость к изменениям и рефакторингу**
|
104 |
| - Модуль на одном слое не может использовать другие модули на том же слое или слоях выше. |
| 104 | + Модуль на одном слое не может использовать другие модули на том же слое или слоях выше. |
105 | 105 | Это позволяет вам вносить изолированные правки без непредвиденных последствий для остальной части приложения.
|
106 | 106 |
|
107 |
| -- **Контролируемое переиспользование логики** |
108 |
| - В зависимости от уровня вы можете сделать код либо очень переиспользуемым, либо очень локальным. |
| 107 | +- **Контролируемое переиспользование логики** |
| 108 | + В зависимости от уровня вы можете сделать код либо очень переиспользуемым, либо очень локальным. |
109 | 109 | Это сохраняет баланс между соблюдением принципа **DRY** и практичностью.
|
110 | 110 |
|
111 |
| -- **Ориентация на потребности бизнеса и пользователей** |
| 111 | +- **Ориентация на потребности бизнеса и пользователей** |
112 | 112 | Приложение разделено на бизнес-домены, и при именовании поощряется использование терминологии бизнеса, чтобы вы могли делать полезную работу в продукте, не вникая полностью во все другие несвязанные части проекта.
|
113 | 113 |
|
114 | 114 | ## Постепенное внедрение {#incremental-adoption}
|
115 | 115 |
|
116 | 116 | Если у вас есть существующая кодовая база, которую вы хотите перенести на FSD, мы предлагаем следующую стратегию. На нашем собственном опыте миграции она хорошо себя зарекомендовала.
|
117 | 117 |
|
118 |
| -1. Начните постепенно формировать слои App и Shared, чтобы создать фундамент. Обычно эти слои самые маленькие. |
| 118 | +1. Начните постепенно формировать слои App и Shared, чтобы создать фундамент. |
119 | 119 |
|
120 | 120 | 2. Раскидайте весь существующий интерфейсный код по виджетам и страницам, даже если у них пока что есть зависимости, нарушающие правила FSD.
|
121 | 121 |
|
|
0 commit comments