- Добавлена документация SLM-архитектуры, базовых правил и прикладных разделов - Добавлены разделы: стили, SVG-спрайты, шаблоны генерации, PostCSS, REST, Realtime - Удалены устаревшие файлы (спрайты, скрипты, стили из app/)
2.8 KiB
2.8 KiB
title, description, keywords
| title | description | keywords | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Алиасы импортов | Какие алиасы импортов есть в проекте и как ими пользоваться. |
|
Алиасы импортов
Какие алиасы импортов есть в проекте и как ими пользоваться.
Конфиг
tsconfig.json в корне проекта:
{
"compilerOptions": {
"paths": {
"app/*": ["./src/app/*"],
"layouts/*": ["./src/layouts/*"],
"screens/*": ["./src/screens/*"],
"widgets/*": ["./src/widgets/*"],
"business/*": ["./src/business/*"],
"infrastructure/*": ["./src/infrastructure/*"],
"ui/*": ["./src/ui/*"],
"shared/*": ["./src/shared/*"]
}
}
}
Восемь алиасов — ровно по числу слоёв. Других алиасов в проекте нет.
Правила
- Каждый импорт между модулями — через алиас слоя. Относительные пути (
../../) запрещены за пределами своего модуля. - Внутри одного модуля допустимы относительные импорты (
./model,./ui/button) — это часть инкапсуляции модуля. - Префикс
@/не используется. Имя слоя — само по себе адрес. - Направление импортов определяется архитектурой, не алиасами. Алиас разрешает импорт технически, но не отменяет правила слоёв (→ Слои).
Хорошо
import { Button } from 'ui/button'
import { useUser } from 'business/user'
import { formatDate } from 'shared/utils/date'
Плохо
// Относительный путь между модулями
import { Button } from '../../../ui/button'
// Префикс @/, которого нет в paths
import { Button } from '@/ui/button'
// Алиас на src — не предусмотрен
import { Button } from 'src/ui/button'
Внутри модуля
Внутри своего модуля — относительные пути:
// src/ui/button/button.tsx
import styles from './button.module.css'
import { Icon } from './icon'
Не использовать алиас на самого себя:
// Плохо — алиас вместо относительного пути внутри модуля
import { Icon } from 'ui/button/icon'