Skip to main content

Command Palette

Search for a command to run...

Exploration de la Structure d’un Projet NestJS

Découvrez l'organisation d'un projet NestJS et les avantages de WebStorm pour le développement.

Updated
8 min read
Exploration de la Structure d’un Projet NestJS
S

Fasciné depuis toujours par le monde informatique, j'évolue depuis de nombreuses années en tant qu'analyste programmeur professionnel. Je suis un développeur rigoureux, soucieux du code bien écrit et surtout maintenable, j'ai acquis de solides connaissances et expériences au cours des années sur différents projets sur lesquelles j'ai eu à travailler. Dynamique et passionné, j'apprécie le travail en équipe, tout en sachant évoluer de façon autonome pour les missions qui le nécessitent. Curieux de nature et polyvalent, j'assume mes responsabilités avec beaucoup de rigueur. Formateur aussi, je suis capable de faire monter une équipe en compétences avec les dernières tendances du web

Dans le dernier article, nous avons introduit NestJS et discuté de ses avantages pour le développement d'applications robustes. Dans ce tutoriel, nous explorerons en détail la structure du projet généré par NestJS. Nous examinerons les différents fichiers et dossiers créés, leur rôle respectif et comment cette organisation facilite le développement.

Nous discuterons également des IDE (Environnements de Développement Intégré) que vous pouvez utiliser pour optimiser votre expérience de développement avec NestJS. Restez à l'écoute pour découvrir comment organiser votre code et tirer le meilleur parti de votre environnement de développement.

Lorsque vous créez une application NestJS avec la commande nest new, le framework génère une arborescence de fichiers bien organisée. Cette structure facilite la séparation des préoccupations, rendant votre application modulaire et évolutive.

1. Exploration des principaux dossiers et fichiers

src/ : Le cœur de votre application. Tous vos modules, contrôleurs et services sont contenus dans ce répertoire.

main.ts : C'est le point d'entrée de l'application. Ce fichier démarre le serveur NestJS. Voici un exemple de code que vous pourriez trouver ici :

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

app.module.ts : Ce fichier est le module racine de votre application. Il déclare les modules, les contrôleurs et les fournisseurs utilisés dans votre application. Il regroupe et gere tous les sous modules.

Voici a quoi ressembre le contenu de app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

app.controller.ts : Ce fichier contient la logique qui gère les routes de l'application. Il est responsable de la réception des requêtes entrantes depuis le client (comme les requêtes HTTP), de la gestion de ces requêtes, et de l'envoi des réponses appropriées. Le contrôleur est en quelque sorte l'intermédiaire entre les services et les routes, orchestrant l'interaction entre les différentes parties de l'application.

Examinons un exemple de contrôleur :

Dans cet exemple, le contrôleur utilise les annotations fournies par NestJS pour définir des routes et injecter des services.

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

app.service.ts : Ce fichier contient la logique métier de l'application, c'est-à-dire tout le code qui traite les opérations spécifiques au domaine de l'application. Les services sont conçus pour être réutilisables et injectables, ce qui signifie qu'ils peuvent être facilement utilisés dans les contrôleurs, ou même dans d'autres services. Cela permet de garder le code organisé, modulaire, et plus facile à maintenir, en séparant la logique métier des contrôleurs qui se concentrent sur la gestion des requêtes et réponses.

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}

app.controller.spec.ts : Un fichier de test pour le contrôleur, utilisant des tests unitaires pour vérifier que le contrôleur fonctionne comme prévu.

  • test/ : Ce dossier contient les fichiers de tests pour votre application. Par défaut, il y a un fichier de test d'intégration pour l'application (app.e2e-spec.ts).

  • node_modules/ : Dossier où toutes les dépendances de votre projet sont installées.

  • package.json : Fichier de configuration qui contient les métadonnées de votre projet, y compris les dépendances et les scripts de démarrage.

  • tsconfig.json : Fichier de configuration TypeScript qui définit les options du compilateur TypeScript pour votre projet.

  • nest-cli.json : Fichier de configuration spécifique à NestJS pour le CLI (Command Line Interface), qui permet de configurer certains aspects du comportement du CLI.

Cette structure est conçue pour être simple et intuitive, permettant aux développeurs de démarrer rapidement avec NestJS. Au fur et à mesure que votre application grandit, vous pouvez ajouter des modules, des contrôleurs et des services supplémentaires dans le dossier src/, tout en maintenant une organisation claire et modulaire du code.

IDE recommandés pour le développement avec NestJS

  1. WebStorm

    • Description : WebStorm, développé par JetBrains, est l'un des meilleurs IDE pour le développement JavaScript et TypeScript. Il offre une intégration complète avec NestJS, ce qui en fait un excellent choix pour les développeurs souhaitant tirer le meilleur parti de ce framework.

    • Avantages :

      • Outils de refactorisation avancés : WebStorm propose des outils puissants pour la refactorisation de votre code, facilitant les modifications de grande envergure.

      • Gestion intégrée des tests : L’IDE prend en charge l’exécution et le débogage de vos tests directement dans l'environnement.

      • Support natif de NestJS : Grâce à des plugins et une documentation intégrée, vous pouvez facilement naviguer et développer des applications NestJS.

    • Extensions recommandées :

      • ESLint : Pour le linting de votre code et assurer une bonne qualité.

      • Prettier : Pour le formatage automatique et cohérent de votre code.

      • NestJS Snippets : Pour des extraits de code utiles spécifiquement pour NestJS, vous permettant d'accélérer votre développement.

Bien que WebStorm soit un IDE payant, JetBrains propose des licences éducatives gratuites pour les étudiants et les enseignants, ce qui peut être une excellente option pour ceux qui cherchent à se perfectionner dans le développement NestJS

Autres IDE

  1. Visual Studio Code (VS Code)

    • Description : Bien que j'utilise principalement WebStorm, VS Code est également un IDE très populaire pour le développement JavaScript et TypeScript. Il est léger et extensible, avec un large éventail d'extensions.

    • Extensions recommandées :

      • Prettier

      • ESLint

  2. Atom

    • Description : Un éditeur de texte hackable développé par GitHub. Bien qu'il soit moins performant que WebStorm et VS Code, il peut être personnalisé pour répondre à vos besoins.

    • Extensions recommandées :

      • atom-typescript

      • linter-eslint

  3. Sublime Text

    • Description : Un éditeur de texte léger et rapide qui prend en charge plusieurs langages de programmation, y compris JavaScript et TypeScript.

    • Avantages : Sublime Text est très réactif et dispose de nombreuses extensions disponibles via Package Control.

Pourquoi comparer WebStorm et Visual Studio Code ?

Bien qu'il existe plusieurs IDEs disponibles pour le développement avec NestJS, tels que Atom, Sublime Text, et d'autres, WebStorm et Visual Studio Code (VS Code) se distinguent comme les options les plus populaires et complètes dans le domaine du développement JavaScript et TypeScript.

  • WebStorm est largement reconnu pour ses outils puissants, son intégration native avec NestJS, et son support avancé de TypeScript. Développé par JetBrains, il est souvent privilégié par des développeurs travaillant sur des projets de grande envergure ou complexes.

  • VS Code, de son côté, est devenu l'éditeur de texte préféré d'une vaste communauté de développeurs en raison de sa légèreté, de ses fonctionnalités extensibles via des plugins, et de son support open-source.

Les deux IDEs offrent des fonctionnalités spécifiques qui répondent particulièrement bien aux besoins des développeurs NestJS. Ainsi, pour aider à faire un choix éclairé entre ces deux outils majeurs, il est pertinent de les comparer plus en détail.

Comparaison entre WebStorm et Visual Studio Code

CaractéristiqueWebStormVisual Studio Code (VS Code)
PerformanceWebStorm est un IDE complet et puissant, mais il peut être plus lourd en termes de consommation de ressources, surtout sur des machines plus anciennes.VS Code est léger et rapide, même sur des machines moins performantes, car c'est un éditeur de texte avec des fonctionnalités d'IDE extensibles.
Fonctionnalités intégréesWebStorm offre un ensemble riche de fonctionnalités directement intégrées, notamment la gestion des tests, le débogage, et la refactorisation.VS Code nécessite des extensions pour ajouter des fonctionnalités comme le débogage et les tests, mais il est très personnalisable grâce à sa vaste bibliothèque d'extensions.
Support de NestJSWebStorm propose un support natif pour NestJS, avec des outils comme des extraits de code et une meilleure intégration TypeScript.VS Code peut être configuré pour NestJS avec des extensions comme NestJS Snippets, mais cela demande une personnalisation manuelle.
PopularitéWebStorm est très populaire parmi les développeurs qui cherchent un IDE complet pour les projets complexes.VS Code est l’un des IDE les plus utilisés dans le monde, apprécié pour sa flexibilité, sa légèreté et sa communauté active.
PrixWebStorm est payant (mais offre une licence gratuite pour les étudiants et enseignants).VS Code est entièrement gratuit et open-source.
ExtensibilitéWebStorm a moins de plugins comparé à VS Code, mais les fonctionnalités incluses sont déjà très complètes.VS Code brille par ses milliers d'extensions disponibles, permettant de personnaliser l’éditeur selon les besoins spécifiques.
Simplicité de prise en mainWebStorm est conçu pour être prêt à l'emploi avec des configurations par défaut adaptées aux projets JavaScript/TypeScript complexes.VS Code est plus simple à utiliser dès le départ, mais peut nécessiter plusieurs extensions pour offrir des fonctionnalités similaires à WebStorm.

Conseils pour l'optimisation de l'environnement de développement

  • Configuration des fichiers de projet : Assurez-vous que WebStorm est correctement configuré pour reconnaître les fichiers TypeScript, en réglant le chemin d'accès aux fichiers et les paramètres du compilateur.

  • Utilisation des fonctionnalités de linting et de formatage : Activez les fonctionnalités de linting et de formatage automatique pour garantir un code cohérent et de haute qualité.

  • Tests et débogage : Profitez des outils intégrés pour exécuter des tests et déboguer votre application directement depuis WebStorm, ce qui peut considérablement améliorer votre flux de travail.

Conclusion

En choisissant WebStorm comme IDE pour le développement avec NestJS, vous bénéficiez d'une expérience robuste et productive. Sa prise en charge native de NestJS, combinée à ses outils de refactorisation et de test, en fait un choix idéal pour les développeurs souhaitant créer des applications performantes et bien structurées.

Dans notre prochain tutoriel, nous plongerons en profondeur dans les modules de NestJS, explorant leur structure et leur utilisation pour construire des applications encore plus robustes.

Nest js

Part 1 of 2

Découvrez ma série sur NestJS, un framework Node.js pour construire des applications backend robustes. Explorez des concepts clés, des bonnes pratiques et des outils pour optimiser votre développement, que vous soyez débutant ou expert !

Up next

Introduction à NestJS

Découverte du framework et de ses concepts fondamentaux NestJS est un framework backend moderne construit avec et pour TypeScript, inspiré par des frameworks comme Angular. Il apporte une structure modulaire et cohérente pour le développement d'appli...