Appuyez sur Entrée pour voir vos résultats ou Echap pour annuler.

À la découverte de Nest

Lorsqu’on nous vend Node comme backend, on nous dit : « Tu vas avoir un seul langage sur toute ta stack! ». L’idée est vraiment intéressante pour certains devs, car plusieurs d’entre vous ont une aversion inébranlable envers le DotNet 😛 Aujourd’hui, je vous présente un framework Node tout spécial que je surveille depuis ses débuts, soit Nest.

Présentation

Nest nous promet une chose : notre code backend va ressembler à notre code frontend parce qu’il supporte TypeScript par défaut. Ceci dit, c’est en supposant que vous utilisez du JS pour le frontend et le backend. La raison pour laquelle je vous présente ce framework aujourd’hui est simple et correspond à mes conseils sur le choix d’une techno dans un projet de production :

  • Des compagnies l’utilisent en production
  • Elle a été testée dans des cas réel
  • Il y a un nombre raisonnable de bogues dans GitHub
  • Il y a un nom raisonnable d’étoiles dans GitHub
  • L’historique de commit démontre l’activité de la techno

Pourquoi choisir Nest

Le framework est, comme les auteurs le disent, grandement inspiré d’Angular. Si votre frontend est fait avec ce dernier, Nest devient un choix plus qu’intéressant à cause de sa syntaxe qui ressemble à celle d’Angular.

De plus, Nest possède tous les outils nécessaires à la création d’applications complètes, comme des intercepteurs, middlewares, injection de dépendances, etc..

Nest-cli

Tout comme Angular, Nest nous propose une interface console pour générer du code. commençons donc un nouveau projet :

Donc, en premier, on installe le cli globalement, puis on crée le projet et on l’exécute. Vous devriez voir Hello World si vous atteignez la page d’accueil.

Structure du projet

Nest-cli va créer une structure de répertoires semblable à celle d’Angular. Le premier fichier qui nous intéresse, c’est app.module.ts :

Ça vous rappelle quelque chose? Donc, vous l’aurez deviné, tous nos contrôleurs vont être déclarés dans l’annotation Module sous la propriété controllers, et les providers vont nous servir à déclarer les services et autres types injectables.

Un premier contrôleur

Pour démontrer le principe de routage, créons un nouveau contrôleur via le cli :

Le cli va nous créer un contrôleur en TypeScript, sa classe de tests unitaires et va aussi ajouter la référence au module. Modifions le code TS pour le suivant :

Avec le paramètre de l’annotation Controller, on définit la base de la route. Ici, ce sera domain.com/time. Puis, avec les annotations Get, Post, Put ou Delete, on ajouter la méthode à la route, ici GET  domain.com/time/getTime.

Injection de dépendances

Créons d’abord un service avec nest-cli :

Puis ajoutons le code suivant :

Les programmeurs Angular verront assurément la ressemblance. En fait, la syntaxe est la même! Encore une fois, nest-cli nous a ajouté l’entrée dans les providers de AppModule.

Et pour l’injecter dans le contrôleur? Facile :

Le conteneur d’injection de dépendances va s’occuper de gérer l’instance de TimeService.

Middlewares!

Dernier point et je vous laisse explorer, mais il est possible de créer tout aussi facilement des middlewares devant vos méthodes de contrôleur.

Créons le middleware :

Supposons un cas ou vous voulez valider un jeton de sécurité dans les entêtes http, vous pourriez le faire comme ceci :

Puis, pour l’activer, ceci se fait en implémentant NestModule dans AppModule et en définissant la méthode configure() comme suit :

Conclusion

Aujourd’hui, je l’espère, vous avez découvert un nouveau framework. L’avantage indéniable de nest pour un backend à Angular en fait un choix à considérer dans une entreprise. Ça peut paraître évident comme ça, mais si le backend est dans une autre techno, admettons C#, il sera difficile, mais pas impossible, de trouver des programmeurs qui sont expert sur la stack au complet.

Ceci dit, vous le connaissiez? L’utilisez-vous? Je veux vos expériences dans les commentaires ci-dessous 🙂 Merci de partager cet article comme à chaque semaine dans vos réseaux respectifs.

Cheers!

 

Suivez-nous par courriel!

Saisissez votre adresse courriel pour vous abonner au blog d'Ezo et recevoir une notification de chaque nouvel article par email.