Skip to content
NestJS OpenPart 3, section c
Change language: read in French

c · Les modules

  • Project: Werewolf
  • About 30 minutes
  • 2 exercises

This content is not available in your language yet.

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.

src/villages/villages.module.ts
import { Module } from '@nestjs/common';
import { VillagesController } from './villages.controller.js';
@Module({
controllers: [VillagesController],
providers: [],
})
export class VillagesModule {}
src/app.module.ts
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.

Exercises 3.7 to 3.8

Project: marketplace

Gé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.

To check your work: npm run test:partie-3 (exercises repository)