Основные концепции FDA
🌀 Фрактальность
Section titled “🌀 Фрактальность”Фрактальность — это принцип, при котором структура на одном уровне повторяется на всех других уровнях.
Принципы
Section titled “Принципы”- Две категории для кода - функциональные слои (инфраструктура) и бизнес логика
- Бизнес логика должна быть инкапсулирована и определять домены
- Домены содержат функциональные слои и поддомены
- Это module first подход
Термины внтури бизнес логики:
Section titled “Термины внтури бизнес логики:”Домены
Section titled “Домены”- Задаются требованиями бизнеса
- Прозрачны для разработчиков, менеджеров и заказчиков
- Могут иметь публичное api для кросс-доменных связей
- Определяют структуру приложения
- Задаются разработчиками
- Расширяются по мере возрастания функциональной сложности приложения
- Данные перетекают как правило последовательно от слоя к слою
- Отвечают за поток данных внутри доменов
🏗️ Business Logic vs Infrastructure
Section titled “🏗️ Business Logic vs Infrastructure”| Уровень | Путь | Описание |
|---|---|---|
| Infrastructure | src/lib/* | Код инфраструктуры, без бизнес-логики. Меняется крайне редко, в случае компонентов - их можно вынести в библиотеку |
| Business Logic | src/routes/* | Код с бизнес логикой. Меняется часто, может использовать код инфраструктуры |
📊 Слоистая архитектура (Layered Architecture)
Section titled “📊 Слоистая архитектура (Layered Architecture)”Каждый домен/модуль имеет строгое разделение на слои. Верхние слои не используют нижние, но нижние используют соседний верхний. Направление потока данных сохраняется на всех слоях:
Обобщение логических слоев:
Section titled “Обобщение логических слоев:”| Слой | Файлы | Ответственность | Запреты |
|---|---|---|---|
| Repo | server/repo/* | Подключение к внешним источникам | Нет бизнес-логики |
| Model | model.server.ts, schema.ts | Логика работы с данными | Богатые модели бизнес-логикой |
| RPC | rpc.ts | Использует модели и выступает как API | Не использует |
| Reactivity | state.ts, stores.ts | Управление состоянием, реактивность | Нет прямых импортов внешних источников |
| UI | +page.svelte, ui/ | Отображение, пользовательский ввод | Нет прямых импортов repo/* |
🔗 Следующие шаги
Section titled “🔗 Следующие шаги”→ Структура проекта — детальное описание путей и конвенций
→ Домены и подмодули — фрактальная организация кода