2026-04-30 19:32:10 +03:00
---
title: Модуль
2026-05-08 08:21:34 +03:00
description: Как должен выглядеть сгенерированный SLM-модуль в проекте.
2026-04-30 19:32:10 +03:00
---
# Модуль
2026-05-08 08:21:34 +03:00
Как должен выглядеть сгенерированный SLM-модуль в проекте.
2026-04-30 19:32:10 +03:00
## Назначение
2026-05-08 08:21:34 +03:00
Архитектурное определение модуля описано в разделе [Архитектура → Модули ](../basics/architecture/modules.md ). Список сегментов описан в разделе [Архитектура → Сегменты ](../basics/architecture/segments.md ).
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
Эта страница показывает прикладное оформление трёх типов модулей: UI, бизнес и инфраструктурный.
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
## Создание
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
1. Проверьте, что в проекте есть нужный шаблон в `.templates/` .
2. Если шаблона нет — создайте е г о по разделу [Создание шаблонов ](./templates/templates-create.md ).
3. Сгенерируйте модуль через [VS Code или CLI ](./templates/templates-usage.md ).
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
## Типы модулей
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
Архитектура определяет три типа модулей ([Типы модулей ](../basics/architecture/modules.md#типы-модулей )):
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
| Тип | Обязательный файл | Описание |
|---|---|---|
| UI-модуль | `{name}.tsx` | Модуль, выросший из компонента |
| Бизнес-модуль | `{name}.factory.ts` | Модуль вокруг публичного runtime API |
| Инфраструктурный модуль | нет | Модуль вокруг технического сервиса |
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
## UI-модуль
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
UI-модуль — это компонент, который перерос ограничения компонента: получил собственные хуки, вложенные модули в `parts/` , сценарную логику или публичный API. Внутренняя структура та же, что у компонента: корневой `.tsx` , типы, стили, `ui/` . Н о без ограничений компонента.
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
Подробное оформление компонентов внутри `ui/` описано в разделе [Компонент ](./component.md ).
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
## Бизнес-модуль
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
Бизнес-модуль строится вокруг публичного runtime API. Ключевой файл — фабрика (`{name}.factory.ts` ), которая возвращает всё, что нужно внешнему коду в runtime.
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
Архитектурное описание фабрики: [Архитектура → Фабрика ](../basics/architecture/modules.md#фабрика ).
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
### Структура
2026-04-30 19:32:10 +03:00
```text
2026-05-08 08:21:34 +03:00
business/customer/
├── customer.factory.ts
├── index.ts
└── types/
├── customer.type.ts
├── customer-api.type.ts
├── customer-deps.type.ts
└── customer-factory.type.ts
2026-04-30 19:32:10 +03:00
```
2026-05-08 08:21:34 +03:00
### Типы
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
`business/customer/types/customer-api.type.ts`
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
```ts
export type CustomerApi = {
useCustomer: () => Customer
CustomerCard: (props: CustomerCardProps) => ReactNode
}
```
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
`business/order/types/order-deps.type.ts`
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
```ts
export type OrderDeps = {
customer: Pick< CustomerApi , ' useCustomer ' >
}
2026-04-30 19:32:10 +03:00
```
2026-05-08 08:21:34 +03:00
`business/order/types/order-factory.type.ts`
```ts
export type OrderFactory = (deps: OrderDeps) => OrderApi
```
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
### Фабрика без зависимостей
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
`business/customer/customer.factory.ts`
2026-04-30 19:32:10 +03:00
```ts
2026-05-08 08:21:34 +03:00
import type { CustomerFactory } from './types/customer-factory.type'
export const customerFactory: CustomerFactory = () => {
return {
useCustomer,
CustomerCard,
}
}
2026-04-30 19:32:10 +03:00
```
2026-05-08 08:21:34 +03:00
### Фабрика с зависимостями
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
`business/order/order.factory.ts`
```ts
import type { OrderFactory } from './types/order-factory.type'
export const orderFactory: OrderFactory = (deps) => {
return {
useOrder,
OrderCard,
}
}
2026-04-30 19:32:10 +03:00
```
2026-05-08 08:21:34 +03:00
### Композиция на уровне screen
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
```tsx
// screens/home/home.screen.tsx
import { customerFactory } from '@/business/customer '
import { orderFactory } from '@/business/order '
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
const customer = customerFactory()
const order = orderFactory({ customer })
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
const { useOrder, OrderCard } = order
export const HomeScreen = () => {
const currentOrder = useOrder()
return < OrderCard order = {currentOrder} / >
}
```
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
## Инфраструктурный модуль
2026-04-30 19:32:10 +03:00
2026-05-08 08:21:34 +03:00
Инфраструктурный модуль строится вокруг технического сервиса или интеграции. Е г о структура определяется природой сервиса — фиксированного корневого файла нет.
Архитектурное описание: [Архитектура → Типы модулей → Инфраструктурный модуль ](../basics/architecture/modules.md#инфраструктурный-модуль ).
Пример модуля темы:
2026-04-30 19:32:10 +03:00
```text
2026-05-08 08:21:34 +03:00
theme/
├── index.ts
├── config/
├── hooks/
2026-04-30 19:32:10 +03:00
├── styles/
2026-05-08 08:21:34 +03:00
└── ui/
2026-04-30 19:32:10 +03:00
```
2026-05-08 08:21:34 +03:00
Пример модуля API-клиента:
2026-04-30 19:32:10 +03:00
```text
2026-05-08 08:21:34 +03:00
backend-api/
├── backend-api.client.ts
├── config/
2026-04-30 19:32:10 +03:00
├── types/
└── index.ts
```