- добавлен React/Vite-лендинг с карточками документаций - добавлена генерация корневого llms.txt из конфига документов - добавлена сборка SLM Design через VitePress - добавлены Dockerfile, Caddyfile и Gitea CI/CD - настроены контекстные Link headers для llms.txt
2.1 KiB
title, description
| title | description |
|---|---|
| Композиция фабрик | Пример композиции business-фабрик на уровне screen-модуля в React-проекте |
Композиция фабрик
Раздел показывает, как собрать API нескольких business-модулей в React screen-модуле. Пример подходит для простой композиции, когда screen сам является точкой использования доменов.
Идея
Композиция фабрик выполняется в модуле-потребителе: screen, layout или другом модуле группы «Композиция». Business-модули не импортируют runtime-код друг друга напрямую, а cross-domain зависимости получают только через аргументы фабрик.
Структура screen-модуля
screens/home/
├── home.screen.tsx
└── index.ts
Сборка фабрик
Файл: screens/home/home.screen.tsx.
import { customerFactory } from '@/business/customer'
import { orderFactory } from '@/business/order'
const customer = customerFactory()
const order = orderFactory({ customer })
const { useOrder, OrderCard } = order
export const HomeScreen = () => {
const currentOrder = useOrder()
return <OrderCard order={currentOrder} />
}
customerFactory создаётся первой, потому что orderFactory зависит от части API домена customer. Модуль order не импортирует customer в runtime — зависимость передаётся снаружи.
Публичный API screen-модуля
Файл: screens/home/index.ts.
export { HomeScreen } from './home.screen'
Screen экспортирует только собственный публичный API. Собранные экземпляры business API остаются деталями реализации screen-модуля.