Adonis 6

  • Date de parution
  • Date de mise à jour
  • AuteurCarl-Stéphan Parent

Au sein de l'écosystème dynamique de Node.js, un framework, bien que lancé il y a près d'une décennie, continue de susciter l'intérêt pour son approche équilibrée et ses fonctionnalités robustes : AdonisJS. Nous avons précédemment répondu à la question suivante : Pourquoi choisir AdonisJS ? Avantages de ce framework Node.js complet. Mais concrètement, qu'est-ce qui distingue AdonisJS de ses concurrents tels qu'Express.js ou Nest.js ? Quels sont les avantages concrets de son architecture modulaire et de son intégration native de TypeScript pour les développeurs professionnels ? Et surtout pourquoi la version 6 de ce framework, récemment mise en lumière par Romain Lanz, mérite-t-elle une attention renouvelée dans le paysage du développement backend JavaScript ? Pour répondre à ces interrogations, cet article propose une exploration des fondements d'AdonisJS 6. Nous examinerons sa philosophie de conception unique, son architecture à la fois complète et flexible, ainsi que ses cas d'utilisation privilégiés. Nous mettrons également en lumière sa démarche proactive en matière de gestion des dépendances et détaillerons les fonctionnalités clés et les modules officiels qui enrichissent son écosystème. Enfin, nous aborderons l'importance de sa communauté et les ressources disponibles pour ceux qui souhaitent approfondir leurs connaissances. Pour commencer notre exploration, plongeons au cœur de ce qui définit AdonisJS 6 et découvrons la vision qui anime son développement, telle que présentée par Romain Lanz.

1. Qu'est-ce qu'AdonisJS 6 ? Présentation du framework Node.js par Romain Lanz.

AdonisJS se présente comme un framework JavaScript qui fonctionne sur Node.js. Écrit et compatible avec TypeScript, il embrasse les Modules ECMAScript (ESM) pour une syntaxe moderne. Sa particularité réside dans son approche : il offre un framework complet sans pour autant contraindre les développeurs dans une structure rigide.

2. Philosophie d'AdonisJS : un framework Node.js complet et orienté long terme.

Plus qu'un simple ensemble d'outils, AdonisJS porte une philosophie claire :

  • Framework complet : il propose une solution "full-stack" prête à l'emploi, capable de répondre aux besoins d'applications web modernes, des plus complexes aux plus basiques (comme un simple routeur) ;
  • Vision à long terme : AdonisJS ne suit pas les tendances éphémères. L'adoption de TypeScript, par exemple, n'a eu lieu qu'après une évaluation approfondie de sa maturité ;
  • Modules robuste : chaque module est conçu avec une attention particulière à la maintenabilité et à l'évolutivité, ce qui peut influencer le rythme de développement ;
  • Évolution maîtrisée : les changements majeurs sont assumés lorsqu'ils sont justifiés par l'évolution du langage JavaScript lui-même. Ses six versions majeures en dix ans témoignent d'une progression structurée ;
  • Open source : le projet est entièrement ouvert et soutenu par une communauté active ;
  • Équipe expérimentée : l'équipe principale compte des membres influents de la communauté Node.js, gage de son expertise.

3. Architecture modulaire et flexible d'AdonisJS pour le développement backend.

L'architecture d'AdonisJS se veut à la fois "high-scope" et "low-scope". Il offre un ensemble complet de fonctionnalités prêtes à l'emploi (routage, ORM, validation, authentification), tout en permettant d'installer uniquement les modules nécessaires, offrant ainsi une grande liberté dans la construction des applications. Bien qu'il propose une architecture MVC de base, AdonisJS n'empêche pas l'adoption d'autres structures.

4. Cas d'usage d'AdonisJS : API-first et monolithe moderne avec Node.js.

AdonisJS se révèle particulièrement adapté pour :

  • API-first : La création d'APIs pour alimenter des frontends découplés (React, Vue, applications mobiles) est un cas d'usage privilégié. Son intégration naturelle avec les architectures modernes (SPA, PWA, microservices) en fait un choix pertinent.
  • Monolithe moderne : Il peut également servir de base pour des applications monolithiques modernes, combinant backend et frontend grâce à des outils comme InertiaJS et son moteur de template EdgeJS.

5. AdonisJS et la prévention des dépendances excessives dans l'écosystème JavaScript.

Une des préoccupations majeures d'AdonisJS est la limitation de la dépendance à des packages tiers. Les récents incidents dans l'écosystème JavaScript (Faker.js, Core-js) soulignent les risques liés à des mainteneurs externes. AdonisJS privilégie des modules internes robustes et bien maintenus.

6. Fonctionnalités clefs et modules officiels d'AdonisJS 6 pour le backend.

Le cœur d'AdonisJS offre des fonctionnalités essentielles telles que la configuration, la gestion des variables d'environnement, le routage, les contrôleurs, les middlewares, la gestion du corps des requêtes, la gestion des fichiers, l'émetteur d'événements, le chiffrement, le hachage et l'injection de dépendances.

Au-delà de ce noyau, AdonisJS propose une riche liste de modules officiels, parmi lesquels on retrouve :

  • Lucid ORM : un ORM performant pour interagir avec les bases de données.
  • Auth et Bouncer : pour la gestion de l'authentification et des autorisations.
  • Drive : un module pour la gestion du stockage de fichiers (local, cloud).
  • Limiter : pour la gestion du "rate-limiting".
  • BentoCache : un système de cache multi-niveaux.
  • VineJS : un système de validation de données.
  • Ally : pour la gestion des autorisations des réseaux sociaux (OAuth).
  • i18n : pour le support de l'internationalisation.
  • Health Checks : pour vérifier l'état de santé des services.
  • Mailer : pour l'envoi d'emails.
  • Vite : un bundler JavaScript moderne pour une expérience de développement rapide ;
  • Shield : pour la sécurisation des applications (protection CSRF, etc.).
  • Transmit : pour la communication en temps réel Server ;
  • InertiaJS et EdgeJS : pour une expérience full-stack moderne ;
  • Jana : un framework de test spécifique à AdonisJS ;
  • Ace : L'outil en ligne de commande d'AdonisJS ;
  • Et bien d'autres (HMR, Locks, Attachment Lite, Slugify, Redis...).

7. Communauté et packages AdonisJS : étendre les possibilités du framework Node.js.

Une communauté active contribue également au développement de packages pour AdonisJS, disponibles sur https://packages.adonisjs.com/.

8. Entreprises utilisant AdonisJS : exemples concrets dans le monde réel.

Des entreprises comme Ledger, Renault et même France Travail (en cours de migration) témoignent de la robustesse et de la pertinence d'AdonisJS pour des projets d'envergure.

Il apparaît donc clairement qu'AdonisJS 6 se positionne comme une alternative solide et réfléchie dans l'univers des frameworks Node.js. Nous avons pu constater sa philosophie axée sur la complétude sans sacrifier la flexibilité, son architecture modulaire qui permet une adaptation précise aux besoins des projets, et son adoption native de TypeScript, gage de robustesse et de maintenabilité. Ses cas d'utilisation variés, allant de l'API-first aux applications monolithiques modernes, témoignent de sa polyvalence. L'accent mis sur la prévention des dépendances excessives rassure quant à la pérennité des projets. Enfin, la richesse de ses modules officiels et l'existence d'une communauté active offrent un écosystème en constante évolution pour les développeurs. Fort de ces atouts et de cette vision claire, comment l'adoption croissante de frameworks "full-stack" comme AdonisJS pourrait-elle influencer les pratiques de développement et l'architecture des futures applications web en JavaScript ?

Sources

Romain Lanz "Présentation d'AdonisJS 6" in YouTube (16/05/24) [09/05/25] [www.youtube.com/watch?v=DDlP1yY4OYI].

Thx M. Brice :)