Présentation de NestJS [+6 Learning Resources]



NestJS est un framework Node.js évolutif, conçu pour développer des applications côté serveur performantes et robustes.

Sa conception vise à éradiquer les bases de code désordonnées. Grâce à sa structure modulaire, l’organisation du code en différents modules devient un jeu d’enfant.

Basé sur TypeScript et utilisant ExpressJS en interne, NestJS séduit les développeurs qui souhaitent bénéficier de la puissance du typage statique offert par TypeScript. Il fusionne divers concepts issus de la programmation réactive fonctionnelle (FRP), de la programmation orientée objet (POO) et de la programmation fonctionnelle (FP).

Pourquoi choisir NestJS ?

NestJS est particulièrement adapté aux débutants grâce à sa structure claire et à son interface en ligne de commande (CLI) intuitive. Les développeurs peuvent ainsi mettre en place de nouvelles fonctionnalités en utilisant une simple commande tout en profitant de ce framework Node.js.

NestJS fournit un module, un service, un contrôleur et une suite de tests prêts à l’emploi pour faciliter le démarrage. De plus, de nombreux modèles et exemples sont disponibles pour accélérer le processus de développement.

Les développeurs familiers avec les boucles, la syntaxe et les conditions en JavaScript et Angular trouveront la courbe d’apprentissage de NestJS très douce.

Fonctionnalités clés de NestJS

Basé sur TypeScript

NestJS repose sur TypeScript, un sur-ensemble de JavaScript. TypeScript améliore l’expérience de développement en évitant les vérifications manuelles d’erreurs à chaque modification du code. Il offre toutes les fonctionnalités de JavaScript, avec des avantages supplémentaires.

Conteneur d’injection de dépendances

L’injection de dépendances dissocie l’initialisation des objets utilisés par une classe de la classe elle-même. La classe est alors considérée comme un « client » et les dépendances comme des « services ». Cette fonctionnalité intégrée à NestJS rend les applications plus efficaces et modulaires.

Interface de ligne de commande (CLI) performante

La CLI de NestJS permet d’initialiser, de développer et de gérer l’ensemble de vos applications. Elle offre de nombreuses possibilités :

  • Création de l’architecture du projet
  • Lancement du projet en mode développement
  • Création et regroupement de l’application pour le déploiement en production

Modularisation

Chaque application NestJS est structurée en au moins un module, le module racine étant le plus élémentaire. Dans une application NestJS typique, chaque fonctionnalité logique est regroupée au sein d’un même module. Cette approche facilite l’organisation des composants, notamment dans les applications complexes comprenant plusieurs modules.

Tests unitaires

Les tests automatisés présentent de nombreux avantages, mais leur mise en place peut être fastidieuse. NestJS propose diverses fonctionnalités pour aider les équipes à créer et automatiser les tests. Il est compatible avec plusieurs outils de test, et son système d’injection de dépendances facilite la simulation de composants.

Indépendance vis-à-vis de la base de données

NestJS vous permet d’intégrer facilement n’importe quelle base de données SQL ou NoSQL en fonction de vos besoins. La connexion à une base de données est simple, il suffit de charger le pilote Node.js approprié.

Support de nombreuses bibliothèques

NestJS est compatible avec divers outils, ce qui accélère le développement d’applications. Il prend en charge la journalisation, la validation, la mise en cache, les WebSockets, TypeORM, Mongoose et GraphQL sans configuration supplémentaire.

Architecture et flux de travail de NestJS

L’architecture de NestJS est basée sur 3 couches : les contrôleurs, les fournisseurs et les modules. Cette séparation permet de développer un code propre et sans chevauchement.

Source de l’image : meilleure programmation

Contrôleurs

Les contrôleurs de NestJS font le lien entre les requêtes et les réponses des clients. Le mécanisme de routage dirige chaque requête HTTP vers le contrôleur approprié. Le framework utilise des décorateurs et des classes pour créer des contrôleurs. Chaque méthode de la classe est associée à des routes pour recevoir des requêtes spécifiques.

Fournisseurs

Les fournisseurs sont les éléments fondamentaux de NestJS. Ils sont injectés en tant que dépendances et créent des relations entre divers objets. Les classes telles que les assistants, les services ou les référentiels peuvent être considérées comme des fournisseurs après l’ajout du décorateur `@Injectable()`. Ces fournisseurs peuvent également être injectés via le constructeur, et NestJS gère la résolution des dépendances.

Modules

Un module dans NestJS regroupe un ensemble de fonctionnalités étroitement liées. Chaque application NestJS possède un module racine qui sert de point d’entrée. Il est conseillé d’utiliser plusieurs modules pour obtenir un code organisé et facile à lire. Le décorateur `@Module()` de Nest définit un module et fournit des informations telles que les dépendances, les contrôleurs et les fournisseurs associés.

Premiers pas avec NestJS

Assurez-vous que Node.js et npm sont installés. Node.js est l’environnement d’exécution idéal pour NestJS. La version >= 12 est requise (sauf la v13). Vous pouvez vérifier l’installation avec ces commandes :

node -v
npm -v

Si les deux sont installés, vous obtiendrez une sortie similaire à celle-ci :

Sinon, téléchargez-les sur le site officiel. Notez que Node.js et npm sont installés ensemble.

  • Installez l’interface de ligne de commande Nest. Utilisez les commandes suivantes pour installer la CLI et créer le projet :
npm i -g @nestjs/cli
nest new nom-du-projet

Pour cette démonstration, le projet sera nommé « mynestapp ». NestJS vous donne le choix entre TypeScript et Vanilla JavaScript. Sélectionnez l’option qui vous convient et validez. Une fois l’application créée, la structure des fichiers sera configurée, et le dossier « src » contiendra plusieurs fichiers de base, comme illustré dans la capture d’écran ci-dessous :

  • Exécutez l’application / Votre premier « Hello World »

Après l’installation, exécutez ces commandes pour démarrer le serveur de développement :

cd mynestapp
npm run start

Saisissez http://localhost:3000/ dans votre navigateur. Votre premier « Hello World » avec NestJS devrait apparaître.

Avantages de NestJS

  • Facilité d’apprentissage. NestJS est facile à maîtriser, surtout si vous venez d’Angular ou si vous avez une compréhension générale de JavaScript. Une documentation détaillée facilite l’apprentissage de ce puissant framework.
  • Flexibilité. NestJS est polyvalent. Vous pouvez créer des applications MVC, GraphQL, des API RESTful et des sockets Web à l’aide de ce framework Node.js.
  • Écosystème riche en modules. Les modules pris en charge par la communauté permettent de structurer facilement les différentes fonctionnalités lors du développement d’applications côté serveur.
  • Développement rapide et architecture solide. NestJS vous évite de tout construire à partir de zéro. De plus, son architecture solide facilite la compréhension de votre code.

Inconvénients de NestJS

  • Peu adapté à ceux qui ne connaissent pas TypeScript et Angular. L’architecture de NestJS s’inspire fortement d’Angular. Ceux qui n’ont pas cette expérience peuvent avoir besoin de temps pour comprendre la syntaxe et la structure.
  • Quelques lacunes. NestJS est encore récent et n’égale pas encore certains frameworks établis basés sur Python ou GO.

Entreprises utilisant NestJS

#1. Adidas

Le fabricant de chaussures et designer Adidas fait partie des entreprises qui utilisent NestJS. Les fonctionnalités remarquables de NestJS ont certainement séduit ce géant de la chaussure pour l’utiliser dans son backend.

#2. Capgemini

Capgemini, une multinationale française, propose des services de conseil, de technologie, d’externalisation et de services professionnels. Cette entreprise inclut NestJS dans sa pile technologique.

#3. Roche

Roche est une entreprise multinationale de soins de santé avec deux divisions : produits pharmaceutiques et diagnostics. Roche utilise NestJS comme l’une des briques technologiques de son site Web principal.

Ressources d’apprentissage

#1. NestJS zéro à héros

Ce cours enseigne aux développeurs comment créer et déployer des applications back-end d’entreprise en utilisant TypeScript et Node.js. Il aborde la création d’API, la gestion de l’autorisation et de l’authentification, les tests unitaires des applications Nest et l’utilisation de TypeORM pour l’interaction avec les bases de données.

#2. NestJS : Le guide complet du développeur

Ce cours enseigne aux développeurs comment créer des API backend à l’aide de Nest, TypeScript et TypeORM. Il fournit toutes les informations nécessaires pour configurer le codage, les tests et le déploiement de votre application NestJS. Vous y comprendrez également le fonctionnement interne du framework Web NestJS.

#3. Maîtriser NestJS

Ce cours enseigne comment développer des applications Node.js de niveau entreprise en utilisant TypeScript. Il aborde la validation et la sérialisation des données, l’utilisation de jetons JWT, l’utilisation de NestCLI et l’abstraction de base de données moderne, entre autres sujets.

#4. NestJs en pratique (avec MongoDB)

Ce cours enseigne tout ce que vous devez savoir sur NestJS, des modules aux contrôleurs, en passant par les services de garde, les canaux et le middleware. Il adopte une approche basée sur des projets, où vous codez et hébergez votre code sur GitHub, avec des fichiers zip téléchargeables pour chaque section.

#5. Nest.js : Un framework Node.js progressif

Ce livre présente NestJS aux développeurs et explique comment tirer parti de JavaScript et de TypeScript. Il adopte un format pratique pour vous permettre de configurer et de lancer votre application NestJS rapidement.

#6. Practical Nest.js : Développer des applications Web MVC propres

Ce livre adopte une approche basée sur des projets pour créer une application de boutique en ligne qui utilise diverses fonctionnalités de NestJS. Il inclut de courtes discussions, des conseils et des phrases utiles lors de la création de votre application NestJS.

Conclusion

NestJS est un framework Node.js puissant et l’un des frameworks Typescript les plus populaires pour les applications côté serveur. Son approche axée sur les bonnes pratiques de codage et son architecture standard ont séduit de nombreux ingénieurs qui souhaitent se concentrer sur la logique métier lors de la création d’applications.