Table des matières[Cacher][Montrer]
En 2021, JavaScript était le langage de programmation le plus utilisé.
L'attrait de cette technologie est indéniable, comme en témoigne le grand nombre de frameworks qui permettent la programmation JavaScript.
Il y a Angular, React et Vue sur le frontend, ainsi que Express et Next sur le backend, pour n'en citer que quelques-uns.
Avec autant de frameworks merveilleux pour la programmation backend en JavaScript accessibles, vous vous demandez peut-être pourquoi je chercherais quelque chose de différent plutôt que d'utiliser simplement Express ou Next.
Peut-être avez-vous besoin de relancer rapidement le processus de développement avec un passe-partout décent, et l'ajout manuel non seulement de nouveaux contrôleurs, mais également de services, vous rend malade.
Ou vous souhaitez créer un logiciel volumineux, évolutif et simple à gérer. Ou peut-être souhaitez-vous simplement travailler de manière plus efficace et pratique.
Indépendamment de ce qui est vrai dans votre situation, Nest.js peut être la solution parfaite pour vos besoins.
Cet article fournira des informations sur NestJS ainsi qu'une expérience pratique.
Qu'est-ce que Nest JS ?
NestJS est un framework Node progressif qui est open-source, extensible et adaptable .js cadre pour la construction, l'engagement et la remise en question des systèmes backend. C'est maintenant le nœud avec le taux de croissance le plus rapide.
Cadre TypeScript pour js. NestJS est utilisé pour créer des applications évolutives, testables et vaguement connectées.
Il ajoute de l'évolutivité à Node. Les serveurs Js ont été portés à un tout autre niveau. PostgreSQL, MongoDB et MySQL font partie des bases de données prises en charge.
NestJS est extensible car il peut être utilisé avec d'autres bibliothèques ; flexible grâce à son écosystème adaptable à part entière. Et progressif puisqu'il prend en charge les fonctionnalités et les principes de conception de JavaScript.
Il est principalement influencé par Angular, React et Vue et est livré avec une injection de dépendances intégrée.
Fonctionnalités:
- Il est simple à utiliser, à apprendre et à maîtriser.
- C'est gratuit et open-source (Licence MIT)
- Interface de ligne de commande (CLI) puissante pour une productivité accrue et une simplicité de développement
- Programmes de tests unitaires simples à utiliser
- TypeScript, un langage étroitement typé qui est un sur-ensemble de JavaScript, est utilisé.
- Développement et maintenance d'une base de code active.
- Prise en charge de centaines de modules spécifiques à Nest qui simplifient l'interface avec des technologies et des idées populaires telles que TypeORM, Mongoose, GraphQL, la journalisation, la validation, la mise en cache, WebSockets, etc.
Quels sont les éléments constitutifs de NestJS ?
Les composants de construction des applications Nest sont répertoriés ci-dessous ; il y en a d'autres, mais ces trois-là sont les plus significatifs. Voyons-les rapidement.
1. Contrôleurs
Les contrôleurs sont chargés de traiter les demandes entrantes et de répondre aux clients. Il reçoit des requêtes HTTP particulières et le système de routage détermine quel contrôleur reçoit quelle requête.
Il rédige ensuite une réponse appropriée à envoyer. Avec l'aide de classes et de décorateurs, un collecteur simple est construit et chaque contrôleur a son propre ensemble de routes pour effectuer diverses tâches.
2. Fournisseurs
Les fournisseurs sont une idée clé dans Nest. De nombreuses classes Nest de base (services, référentiels, usines, assistants, etc.) peuvent être gérées en tant que fournisseurs.
La notion de base d'un fournisseur est qu'il peut être injecté en tant que dépendance ; cela implique que les objets peuvent former diverses associations les uns avec les autres, et le rôle de "câblage" des instances d'objets peut être principalement sous-traité au système d'exécution Nest.
3 Modules
Un module est une classe avec le décorateur @Module() qui organise les composants de la structure de l'application. Chaque application a un module racine qui est utilisé pour construire le graphe d'application, ce qui résout davantage les dépendances et les interactions entre le fournisseur et le module.
Ce décorateur donne des métadonnées à Nest.js afin d'identifier les composants, contrôleurs ou autres ressources qui seront utilisés dans le code de l'application et de les combiner en un seul ensemble.
Chaque module possède un ensemble de fonctionnalités qui sont connectées d'une manière ou d'une autre.
Premiers pas avec NestJS
1. Installation
Installons NestJS et créons un projet avec en suivant ces étapes :
La structure de répertoires suivante sera créée à la suite de cela :
2. Contrôleurs
Les éléments constitutifs du Nest sont les contrôleurs. Ce sont les emplacements où les demandes entrantes seront traitées. Vous pouvez spécifier le chemin d'accès à l'aide des modificateurs de méthode HTTP (Get, Post, Put, Delete, etc.), comme indiqué dans le code ci-dessous.
Nestjs utilise l'approche de décorateur et est principalement développé en Typescript, bien qu'il prenne également en charge JavaScript. Vous pouvez également utiliser un validateur de classe pour valider le corps de la requête.
Je vais juste créer une instance de serveur Nestjs et ajouter ValidationPipe globalement. Les pipes ne sont que des méthodes qui s'exécutent avant les contrôleurs. Les tubes peuvent également être appliqués au niveau méthode/argument à l'aide du décorateur @UsePipes.
3. Fournisseurs
Les fournisseurs sont un autre composant essentiel de Nestjs. De loin, je stockais des données dans une variable temporaire. C'est pourquoi une tâche aussi simple peut être accomplie à l'aide des gestionnaires de contrôleur.
Cependant, pour une logique plus grande et plus compliquée, la séparation et la réutilisation du code seraient difficiles. C'est à ce moment que les fournisseurs entrent en jeu. Vous pouvez déclarer/créer un fournisseur au-dessus d'une classe en utilisant le décorateur @Injectable. Ensuite, à l'aide de fournisseurs, vous pouvez effectuer l'injection de dépendances, la journalisation et d'autres tâches.
4 Modules
Les modules Nestjs ne sont pas globaux ; au lieu de cela, ils ont de la profondeur.
Cependant, il peut également être partagé avec d'autres modules. Bien qu'il propose, comme Angular, des modules globaux, il est plus conseillé de conserver les services/contrôleurs dans le module où ils sont le plus couramment utilisés dans Nestjs.
Le NestCLI est utilisé pour produire des modules la plupart du temps, et les fournisseurs/contrôleurs générés dans le contexte de ce module sont automatiquement ajoutés par le CLI. Ceux-ci sont appelés modules de fonctionnalités.
5. Filtres d'exceptions
Les filtres d'exception sont des gestionnaires d'erreurs qui sont invoqués lorsqu'un contrôleur lève une exception. Il gère automatiquement le problème et délivre un message d'erreur approprié et convivial.
De nombreuses exceptions héritées de HttpException sont fournies par le package @nestjs/common, notamment NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException et bien d'autres. Vous pouvez même concevoir votre propre ExceptionFilter.
6. Intergiciel
Une fonction appelée avant le gestionnaire de route est appelée middleware. Les objets de requête et de réponse, ainsi que la fonction middleware next() dans le cycle requête-réponse de l'application, sont accessibles aux fonctions middleware.
Une variable appelée next est généralement utilisée pour identifier la prochaine fonction middleware. Le middleware Nest personnalisé peut être implémenté dans une méthode ou une classe à l'aide du décorateur @Injectable().
7. Gardes
Les gardes ne sont responsables que d'une chose. Il leur appartient d'évaluer si une demande sera traitée ou non par le responsable du traitement en fonction de circonstances spécifiques (en particulier, la logique définie par l'utilisateur).
C'est utile pour l'authentification/autorisation et c'est la méthode recommandée dans Nestjs.
Bien que l'authentification/les autorisations, etc., puissent être effectuées à l'aide d'intergiciels, elles ne sont pas effectuées dans des serveurs HTTP express ou autres car ils n'ont pas de contexte fort connexe et n'ont aucune raison de savoir quelle méthode sera utilisée pour traiter la demande.
Avantages
- Le cadre dépend fortement des annotations, qui sont utilisées pour produire n'importe quoi, des points de terminaison à la documentation Swagger. Les points de terminaison sont basiques et bien rangés, et les annotations facilitent le développement en général.
- Il est simple d'externaliser des modules à usage général et de réutiliser du code dans de nombreux projets puisque Nest.js est un framework basé sur des modules.
- La structure des dossiers de Nest.js est fortement influencée par Angular. Lors de la conception d'un service Nest, cela permet de minimiser les temps d'arrêt.
- Les composants ont leurs propres répertoires, la racine contenant le module d'application et le fichier principal. En raison de la simplicité de la structure, une plus grande attention peut être accordée à la conception des terminaux et de leurs clients plutôt qu'à la structure de l'application.
- Nest, comme Angular, propose un bel outil de ligne de commande, Nestjs/cli, qui est disponible via Node Package Manager.
Inconvénients
- Nest a un avantage en termes d'utilisation de TypeScript et d'intégration angulaire, mais il lui manque le soutien financier d'une grande entreprise.
- Le manque de documentation constitue la plus grande menace pour les utilisateurs de Nest. Bien que le framework ait d'excellentes interactions avec d'autres frameworks, la documentation est clairsemée et ne résout aucune difficulté potentielle.
- Nest a un avantage en termes d'utilisation de TypeScript et d'Angular.
Conclusion
NestJS offre aux développeurs une énorme longueur d'avance. Pour commencer le développement, il vous suffit de créer une nouvelle application et vous êtes prêt à partir. Ce framework donne un coup de pouce significatif d'emblée, tout en vous aidant à franchir des étapes supplémentaires en établissant une architecture d'application adaptée.
Il utilise des méthodes et une technologie de pointe pour produire des applications à la fois gérables et durables. Il peut être utilisé pour se connecter à GraphQL, WebSockets et créer des microservices.
Soyez sympa! Laissez un commentaire