Fermer

mai 13, 2019

Introduction à Nest.js pour les développeurs angulaires –


Dans cet article, nous allons présenter Nest.js pour les développeurs Angular. Nest.js est particulièrement intéressant pour eux, inspiré de Angular et construit pour TypeScript . Alors, qu’est-ce que Nest.js?

Nest.js est un framework de nœud progressif sous licence open source MIT, écrit en TypeScript et partageant de nombreux concepts avec Angular. C’est pour le côté serveur et peut être utilisé pour créer des applications Web efficaces, fiables et évolutives pour l’entreprise. Il a été construit par Kamil Mysliwiec .

Nest.js combine les meilleurs concepts de Programmation orientée objet Programmation fonctionnelle et Programmation fonctionnelle réactive ].

Nest.js propose une multitude de fonctionnalités telles que:

  • Extensibilité: grâce à son architecture modulaire, Nest vous permet d’utiliser les autres bibliothèques existantes dans votre projet.
  • Architecture: Nest a une architecture de projet
  • Polyvalence: Nest fournit un écosystème pour la création de tout type d'applications côté serveur.
  • Progressivité: Nest utilise les dernières fonctionnalités de JavaScript et implémente des solutions et des modèles de conception évolués. développement de logiciels.

Puisqu'il utilise TypeScript et les concepts de base de Angular, les développeurs angulaires peuvent l'apprendre rapidement et créer un backend pour leurs applications angulaires sans tri vers d'autres infrastructures côté serveur.

Derrière les rideaux, Nest.js utilise les bibliothèques existantes et matures que les développeurs de Node.js ont utilisées depuis longtemps, telles que Express.js et TypeORM.

Express est un framework Web minimal, rapide et sans opinion pour Node.js qui fournit de nombreux utilitaires HTTP permettant de créer facilement et rapidement des API REST robustes. Pour TypeORM il s’agit de l’ORM ( Object Relational Mapper ) le plus abouti pour le langage TypeScript et JavaScript moderne. Il prend en charge les modèles Active Record et Data Mapper, ce qui vous permet de créer des applications de haute qualité, à couplage lâche, évolutives et maintenables, en plus des systèmes de base de données existants les plus populaires tels que MySQL, PostgreSQL et Oracle.

Conditions préalables

Pour commencer à utiliser Nest.js, vous avez besoin de quelques prérequis. Puisque ce didacticiel d’introduction suppose que vous êtes un développeur Angular, vous les avez peut-être déjà tous:

  • Node.js et NPM installés sur votre système. Vous pouvez installer les deux à partir du site Web officiel ou suivre la documentation de votre système pour obtenir des instructions.
  • Familiarité ou expérience professionnelle avec TypeScript. En tant que développeur Angular, vous avez déjà utilisé TypeScript, car Angular est basé sur TypeScript.

Installation de Nest CLI

Nest CLI est un utilitaire d'interface en ligne de commande permettant de générer rapidement des projets. avec les fichiers de base et les dépendances nécessaires. Il vous permet également d'échafauder divers artefacts, tels que des composants et des modules, au service de l'application en développement et de la création de l'application finale prête à la production. La CLI de Nest est basée sur le paquet Angular Devkit et utilise nodemon pour surveiller les modifications de fichiers.

Commençons par installer Nest CLI. Ouvrez un nouveau terminal et exécutez la commande suivante:

 npm install -g @ nestjs / cli

Veuillez noter que vous devrez peut-être ajouter sudo avant votre commande dans les systèmes Debian ou MacOS, ou utiliser une invite de l'administrateur CMD sous Windows. Si vous souhaitez installer des packages globalement sur votre système sans être un super-utilisateur, vous devez corriger vos autorisations npm .

Après avoir installé la CLI, vous pouvez l'utiliser pour générer rapidement des projets Nest.js et travailler avec

Génération de votre premier projet Nest

Après l’installation de la CLI, générons un premier projet. Retournez à votre terminal et exécutez la commande suivante:

 nest new firstnestproject

La CLI vous demandera des informations sur votre projet, telles que la description, la version et l'auteur. Vous pouvez soumettre ces détails ou simplement les laisser vides et appuyer sur . Entrez .

La CLI créera un ensemble de fichiers et de dossiers, puis vous demandera le gestionnaire de packages que vous souhaitez utiliser avec votre projet. . Vous pouvez choisir npm ou yarn, mais nous poursuivrons avec npm pour les besoins de ce tutoriel.

Après avoir installé avec succès les dépendances requises, vous pouvez naviguer dans le dossier racine de votre projet et exécuter la commande suivante pour démarrer un live. relance le serveur de développement basé sur nodemon:

 npm run start: dev

Vous pouvez utiliser votre navigateur Web pour accéder à http://127.0.0.1:3000/ où votre serveur Nest est à l'écoute. Vous devriez pouvoir voir une page avec Hello World! .

Vous pouvez laisser ce serveur en marche et démarrer un nouveau terminal pour les autres commandes que nous allons exécuter dans ce didacticiel.

Structure du projet

Le projet Nest.js que nous avons généré possède une structure prédéfinie avec les meilleures pratiques en matière de testabilité, d'évolutivité et de maintenabilité. Jetons un coup d'oeil plus en détail.

Voici une capture d'écran de la structure du projet:

 Structure du projet Nest.js

Le projet comporte un dossier node_modules et un fichier package.json nécessaire à chaque projet Node.js. Il contient également:

  • Un fichier tsconfig.json pour la configuration de TypeScript
  • Un fichier nodemon.json pour la configuration nodemon
  • Un A . fichier json pour le typeint linting
  • Un dossier nest-cli.json pour la configuration CLI
  • A src / contenant le code actuel du projet
  • . test / dossier contenant les tests

Création d'un module Nest

Les projets Nest.js ont une architecture modulaire. Voici la définition de la programmation modulaire de Wikipedia :

La programmation modulaire est une technique de conception de logiciel qui met l'accent sur la séparation des fonctionnalités d'un programme en modules indépendants et interchangeables tels que chacun tout ce dont vous avez besoin pour exécuter un seul aspect de la fonctionnalité souhaitée.

Dans Nest.js, vous pouvez créer un module sous la forme d'une classe TypeScript annotée avec le décorateur @Module () qui fournit les métadonnées qui être utilisé pour organiser la structure de l'application.

Ceci est une image tirée du site officiel de Nest.js montrant comment les modules peuvent être structurés dans un exemple d'application:

 Modules Nest.js

Chaque application Nest.js comporte au moins un module, appelé module root .

Vous pouvez créer des modules à l'aide de la CLI avec le module nest generate . ] commande. Créons un module dans notre projet. Retournez à votre terminal, assurez-vous que vous êtes bien connecté au dossier racine du projet et exécutez la commande suivante:

 Exemple de génération d'un module nest

Ceci générera le fichier src / exemple / exemple.module.ts et mettra à jour le fichier src / app.module.ts pour inclure le module nouvellement créé. [19659002] Si nous ouvrons le fichier de module, nous obtiendrons le contenu suivant pour un module Nest de base:

 import {Module} à partir de '@ nestjs / common';

@Module({})
classe d'exportation ExampleModule {}

Il s'agit d'une classe TypeScript simple ornée du décorateur @Module () disponible dans le package @ nestjs / common .

À présent, ouvrez le module principal de l'application. Dans le fichier src / app.module.ts vous devriez voir le module importé:

 import {Module} de '@ nestjs / common';
importer {AppController} à partir de './app.controller';
importer {AppService} de './app.service';
importer {ExampleModule} de './example/example.module';

@Module({
  importations: [ExampleModule],
  contrôleurs: [AppController],
  fournisseurs: [AppService],
})
classe d'exportation AppModule {}

ExampleModule est importé du chemin ./ example / example.module et ajouté au tableau imports .

Création d'un contrôleur de nid

] Dans Nest.js, les contrôleurs sont utilisés pour gérer les demandes HTTP entrantes et renvoyer les réponses. Ils sont mappés sur des itinéraires.

Vous pouvez créer un contrôleur en définissant une classe TypeScript et en utilisant le décorateur @Controller () .

Dans votre terminal, exécutez la commande suivante pour générer un contrôleur:

 nest generate controller exemple / exemple

Nous avons créé un contrôleur nommé exemple et nous avons préfixé le nom avec le chemin exemple / qui indique à la CLI d'intégrer ce contrôleur à l'exemple . module que nous avions créé auparavant.

Ouvrez le fichier src / exemple / exemple / exemple.controller.ts vous devriez voir le code suivant:

 import {Controller} à partir de '@ nestjs / common' ;

@Controller ('exemple')
classe d'exportation ExampleController {}

Si vous ouvrez le fichier src / example / example.module.ts vous verrez le contrôleur importé et inclus dans le tableau imports de l'exemple module:

 import {Module} de '@ nestjs / common';
importer {ExampleController} depuis './example/example.controller';

@Module({
  importations: [ExampleModule],
  contrôleurs: [ExampleController]
})
classe d'exportation ExampleModule {}

Revenons à notre exemple et créons quelques routes. Rouvrez le fichier src / exemple / exemple / exemple.controller.ts et ajoutez les importations suivantes:

 import {Get, Post, Body} à partir de '@ nestjs / common';

Ajoutez ensuite une méthode index () :

 @Get ()
    index () {
      retourne "Exemple de contrôleur!";
    }

Nous décorons la méthode avec le décorateur @Get () pour créer un itinéraire qui accepte les demandes GET et renvoie une réponse avec le texte Example Controller! . Nous pouvons accéder à cette route à partir de l'URL 127.0.0.1:3000/example . Vous devriez voir une page vierge avec le texte Example Controller! .

Ensuite, ajoutons un itinéraire qui accepte les demandes POST. Ajoutez la méthode suivante:

 @Post ('echo')
    echo (@Body () data): tout {
        renvoyer des données;
    }

Nous créons un itinéraire example / echo qui recevra un objet JSON et le renverra. Nous utilisons le décorateur @Body () pour extraire le corps de la réponse. À l'aide d'un client d'API REST (cURL ou Postman, etc.), vous pouvez envoyer une demande POST contenant des données à l'URL 127.0.0.1:3000/example/echo et récupérer les données. Voici un exemple:

 Réponse POST de Nest.js

Conclusion

Dans cet article, nous avons présenté le cadre Nest.js pour les développeurs Angular. Nous avons également vu comment installer la CLI Nest et l’avoir utilisée pour créer un exemple de projet et divers artefacts tels que des modules et des contrôleurs. Pour plus de détails sur les autres concepts, vous pouvez consulter la documentation officielle .




Source link