c · Les modules
- Projet : Loup-Garou
- Environ 30 minutes
- 2 exercices
Tant que ton controller est directement déclaré dans AppModule, tout ton code fini par s’y entasser. Un module par domaine évite ça : VillagesModule regroupe tout ce qui concerne les villages, et AppModule se contente de l’importer.
import { Module } from '@nestjs/common';import { VillagesController } from './villages.controller.js';
@Module({ controllers: [VillagesController], providers: [],})export class VillagesModule {}import { Module } from '@nestjs/common';import { VillagesModule } from './villages/villages.module.js';
@Module({ imports: [VillagesModule], controllers: [], // VillagesController n'y est plus : il vit dans VillagesModule providers: [],})export class AppModule {}npx nest g module villages crée ce fichier et l’ajoute aux imports d’AppModule — mais si VillagesController était déjà déclaré directement dans AppModule (comme en section b), la CLI ne l’en retire pas toute seule : c’est à toi de le faire, à la main.
Exercices 3.7 à 3.8
Projet : marketplaceGénère ProduitsModule (npx nest g module produits). Retire ProduitsController des controllers d’AppModule, et ajoute-le à ceux de ProduitsModule à la place. Relance le serveur : GET /api/produits doit toujours répondre.
Crée CategoriesModule, avec son propre CategoriesController. Ajoute GET /api/categories, qui renvoie pour l’instant un tableau fixe de noms de catégories. Vérifie que ProduitsModule et CategoriesModule cohabitent bien dans les imports d’AppModule.
Pour vérifier ton travail : npm run test:partie-3 (dépôt d'exercices)