Architecture/FSD
Les règles d'imports
Pour que cette architecture ne s'effondre pas avec le temps, il y a deux règles absolues.
La règle de dépendance unidirectionnelle
Un module ne peut importer que des éléments situés dans les couches strictement inférieures.
/* ✅ AUTORISÉ : features/add-to-cart importe depuis entities et shared */
import { Product } from '@/entities/product';
import { Button } from '@/shared/ui/Button';
/* ❌ INTERDIT : entities/product NE PEUT PAS importer depuis features */
import { AddToCartButton } from '@/features/add-to-cart';
/* ❌ INTERDIT : features/add-to-cart NE PEUT PAS importer un widget */
import { Header } from '@/widgets/header'; L'API publique via index.ts
Chaque Slice doit exposer son contenu via un fichier index.ts. On n'importe jamais directement un fichier interne d'un autre module, cela briserait l'encapsulation.
/* features/add-to-cart/index.ts */
/* On expose uniquement ce qui est nécessaire vers l'extérieur */
export { AddToCartButton } from './ui/AddToCartButton';
export { useAddToCart } from './model/useAddToCart';